今回は、Webサーバで利用しているSSLをよりセキュアにしていきたいと思います
記事が長くなりそうなので、複数回に分けていきます。
前回は第1回としてQualys SSL Server Testの概要を書きました。
これまでのサーバ構築同様にUbuntu 20 & NGINX をベースにしますが、Apache2の設定例も記載していきます。
Ubuntuに限らず、CentOSなどでも設定ファイルの場所を読み替えてもらえば問題ないと思いはずです。
Qualys SSL Server Testのテスト項目
判定は大きく4項目で採点をされます。
- Certificate(証明書)
- Protocol Support(対応プロトコル)
- Key Exchange(鍵交換)
- Cipher Strength(暗号強度)
Certificate(証明書)
普通にLet's Encryptを使って証明書を発行している場合は注意されることも少ないと思いますが、DNS CAAは別途対処が必要です。
2021年8月現在では、DNS CAAの対処を行わなくともCertificateのテストで100点をとることは可能ですが、オレンジの注意喚起が出ていますので対処していきます。
DNS CAA(Certification Authority Authorization)とは
RFC6844で定められている、証明書の誤発行を防止するための仕組みです。
ドメインの管理者がDNSのCAA(Certification Authority Authorization)レコードを利用し、ドメイン名とサブドメインに対して証明書を発行できる認証局(CA)を指定できます。
2017年9月8日以降、認証局(CA)は証明書発行プロセスにおいてDNSのCAAレコードの確認が義務づけられました。
※2021年8月現在では、ドメイン管理者がDNSのCAAレコードの利用を義務付けられているものではありません。
証明書発行を依頼された認証局(CA)はドメインおよびサブドメインのCAAを確認し、証明書を発行できる認証局(CA)が異なる場合は、証明書を発行せず、ドメイン管理者に誤った発行申請があったことを報告します。
DNS CAAレコードを設定した場合は、証明書発行事業者を変える場合などは注意が必要です。
DNS CAAレコードの設定
CAAレコードの標準的な書式は以下の通りです。
;owner ttl class type flag tag value your-domain.com. 300 IN CAA 0 issue "letsencrypt.org" your-domain.com. 300 IN CAA 0 issuewild "letsencrypt.org" your-domain.com. 300 IN CAA 0 iodef "mailto:admin@your-domain.com"
flag
クリティカルフラグのみ定義されています。クリティカルフラグは、認証局が対応するCAAリソースレコードのtagの種類を理解できない場合、証明書を発行してはならないことを示します。クリティカルフラグを設定する場合は値に128を指定します。それ以外の場合は0を指定します
tag
各tagの解説は以下の通りです。
issue | 証明書を発行できる認証局のドメイン名 Let's Encryptの場合は"letsencrypt.org" |
issuewild | ワイルドカード証明書を発行できる認証局のドメイン Let's Encryptの場合は"letsencrypt.org" もし、どの認証局からもワイルドカード証明書の発行を許可しない場合は";"とします |
iodef |
認証局からの連絡先を指定します。 レポートの書式はRFC5070でThe Incident Object Description Exchange Format(IODEF)として定義されています。 |
なお、各tagは複数行の設定が可能です。証明書を発行できる認証局を複数指定することも可能です。
DNS CAAレコードを設定すると、Qualys SSL Server TestのCertificateテストでは下記の通りグリーンになります。
短いですが、今回はここまでとします。
次回はForward SecrecyとTLS1.3対応を進めます。