はじめに
KUSANAGI-8.0.1 ではSSL証明書の透明性( CT(Certificate Transparency) と呼びます) に対応しています。
今回、これについて少し解説したいと思います。
CTの背景
パブリックなSSL証明書は、認証局(CA:Certification Authority)によって発行され、その内容が保証されます。
しかし、近年認証局が不正アクセスを受けて偽のSSL証明書を発行したり、誤って不正な証明書をSSL発行したりという事件がありました。
そこでGoogle社が考案したのが、不正なSSL証明書を早期に発見・検知するための仕組みであるCTを(Certificate Transparency)です。これは、現在RFC6922として規格化され、Google Chrome などが対応しています。
CTの仕組み
CTは、SSL証明書をログサーバに登録して取得するSCT(Signed Certificate Timestamp) とSSL証明書をWebサーバで提供します。
WebブラウザはWebサーバから取得したSCTが、ログサーバに登録されているかどうかを確認することで、SSL証明書が正当なものであることを確認します。
CTを実現するためには、幾つかの方法があります。
一つは認証局がSCT付きSSL証明書を提供するものです。
認証局はSSL証明書をログサーバに登録し、ログサーバからSCT(Signed Certificate Timestamp)を取得し、SCT付きのSSL証明書を提供します。Webサーバでは、このSCT付きのSSL証明書を使用します。
もう一つは、認証局がSSL証明書とSCTを提供し、Webサーバではこの2つを使用してSCT付きのSSL証明書とするものです。
KUSANAGIでのCT実現
KUSANAGIでは、NGINX を使用している場合に限り CT に対応しています。
KUSANAGIでCTを使用する場合、3つの方法があります。
- Let’s Encryptを使用
Let’s Encrypt でSSL証明書でCTを使用する場合、以下のコマンドを実行しログサーバへSSL証明書を登録し、NGINXの設定を行います。kusanagi ssl --ct on
このコマンドでは、取得したSSL証明書をログサーバに自動登録しSCTを取得します。
この取得したSCTとSSL証明書をNGINXの Certificate Transparency moduleでSCT付きのSSL証明書として提供します。
また、Let’s Encryptの自動更新時には、SCTも自動更新します。 - SCT付きSSL証明書を使用
すでにログサーバに登録済みのSSL証明書を認証局から提供されているとき、通常通りSSL証明書を設定して下さい。 - SCTとSSL証明書を使用
認証局からSCTとSSL証明書が提供されるとき、以下のコマンドを実行してログサーバへ登録を行わずに、NGINXの設定のみを行います。kusanagi ssl --ct --on --no-register
また、SSL証明書を配置したディレクトリ以下にscts というディレクトリを作成し、そこにSCTファイルを配置して下さい。
CTの確認方法
CTが有効になっているかどうかを確認する場合、以下のサイトでFQDNを検索することができます。
https://www.google.com/transparencyreport/https/ct/?hl=ja
最後に
常時SSL化というキーワードが最近見受けられ、またLet’s Encryptに代表される無償のSSL証明書や、格安のSSL証明書を使う場面が多くなってきました。
その中で、SSL証明書が正当なものであることを保証する、CTのような技術の重要性は増しています。
KUSANAGIのCTの仕組みはそれを支援するものですので、有効にお使い下さい。