前回はGoogle AdSenseの登録と、Drupal9への実装を進めました
今回は、Webサーバで利用しているSSLをよりセキュアにしていきたいと思います
記事が長くなりそうなので、複数回に分けていきます。
これまでのサーバ構築同様にUbuntu 20 & NGINX をベースにしますが、Apache2の設定例も記載していきます。
Ubuntuに限らず、CentOSなどでも設定ファイルの場所を読み替えてもらえば問題ないと思いはずです。
SSL/TLS強度をあげよう
Webサーバとブラウザ間の通信を暗号化するSSL/TLSですが、利用するプロトコル、暗号化スイートの組み合わせにより安全性がかわります。
プロトコル(SSL/TLS)とは?
一般的には現在もSSL(Secure Socket Layer)と呼ばれていますが、現在はその後継であるTLS(Transport Layer Security)が利用されています。
もともとはNetscape Communications(以降ネットスケープ社)がNetscapeというブラウザを利用して、HTTPによる通信の暗号化をするための仕組みでした。
SSL 2.0、SSL 3.0はネットスケープ社により開発され、その後IETFによりSSL 3.0をベースにTLS 1.0として規格化され、以降TLS 1.1、TLS 1.2、TLS 1.3が定めれています。
TLSではアプリケーション層プロトコルに依存しないため、HTTPだけでなく多くのプロトコルにより採用されています。
SSL/TLSと組み合わせたプロトコル | ポート番号 | 元のプロトコル | ポート番号 |
---|---|---|---|
HTTPS | 443 | HTTP | 80 |
SMTPS | 465 | SMTP | 25 |
LDAPS | 636 | LDAP | 389 |
FTPS(data) | 989 | FTP(data) | 20 |
FTPS(control) | 990 | FTP(control) | 21 |
IMAPS | 993 | IMAP | 143 |
POP3S | 995 | POP3 | 110 |
私のサーバでは、Webサーバ(NGINX)でHTTPSを利用するほか、メールリレーサーバ(Postfix)ではSMTPS、IMAP/POP3メールサーバ(Devecot)ではIMAPS/POP3Sを利用しています。
#3 Ubuntu20でのLet's Encryptによるワイルドカード証明書発行と自動更新(bind編)でもお伝えしましたが、
2018年のGoogle Chrome 68以降、ブラウザではSSL/TLS対応を行わないと「保護されていません」といった警告が出るようになりました。
Webの安全性だけでなく、ユーザからの信頼を落とさないためにもWebサーバにおける常時SSL/TLS化は必須となってきています。
WebサーバのSSL/TLS強度チェック(Qualys SSL Test)
ではWebサーバのSSL/TLS強度をチェックしてみましょう。
SSL証明書のチェックをするサイトはいくつかありますが、様々な情報を提供してくれるQualys SSL Server Testを利用して確認してみます。
このサイトでは、外部から見たWebサーバの証明書やSSL設定の確認が可能です。
https://www.ssllabs.com/ssltest/
早速、Drupal + NGINXをセットアップしたばかりの状況でテストしてみます。
結果ページの上部にSummaryが記載されます。
ここでは、A(A+/A/A-)からFまでの8段階でグレードが表示されます。
そのほか、M(サーバ名と証明書がミスマッチ)、T(信頼性の問題)やErr(接続エラー)などもあります。
見事にB判定でした。
WebサーバがForward Secrecyの対応をしていないことなどでB判定を受けてしまっていますね。
これを、いくつかの対応を行うことによってA+判定まで持っていきましたので、その対応について書いていこうと思います。
尚、問題がある場合は下記のような結果が表示されます。
尚、サマリー下部に記載のラベルの意味は以下の通りです。
- ピンクのラベルは、重篤な脆弱性の問題に関する警告
- オレンジのラベルは、既知の脆弱性の問題に関する警告
- 緑のラベルは、推奨される設定が実施されている
Qualys SSL Server Testのテスト項目
判定は大きく4項目で採点をされます。
- Certificate(証明書)
- Protocol Support(対応プロトコル)
- Key Exchange(鍵交換)
- Cipher Strength(暗号強度)
次回以降、それぞれどのような判定をされているか確認し、対応していきたいと思います。