Web サ-バ-の SSL 設定に、既知の脆弱性が存在しないかチェックして再設定する。
SSL の脆弱性チェックには、Qualys SSL Labs が提供している『SSL Server Test』を使用する。
『Let’s Encrypt を導入して Apache をHTTPS対応にする』直後は、SSL Server Test の Overrall Rating が 『C』だった。
評価は『A』~『F』まであるので、ぼろぼろというわけではなさそうだけど設定を無理なく直せそうなら直してみる事にした。
…というか先人が殆どやってくれて(ry
実施した内容は下記の通り。
- 自動生成された『/etc/httpd/conf.d/ssl.conf』の設定内容を一部削除
- バ-チャルホストの設定に SSL 関係の設定を追加
1.自動生成された『/etc/httpd/conf.d/ssl.conf』の設定内容を一部削除
『ssl.conf』にある<VirtualHost _default_:443>が始まる行から、</VirtualHost>までの行をコメントアウトする。
複数行コメントアウトは Vim で行う場合は、下記の通り。
- 『Ctrl + v』で、矩形選択モ-ドにする
- コメントアウトする行を、十字キ-で選択する
- 『Shift + i』で、挿入モ-ドにする
- コメントアウト文字を入力する
- 『Esc』で、矩形選択モ-ドで選択した行にコメントアウト文字が挿入される
2.バ-チャルホストの設定に SSL 関係の設定を追加
バ-チャルホストの設定を下記の通り設定した。
<VirtualHost *:80> ServerName ドメイン名:80 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> </VirtualHost> <VirtualHost *:443> SSLEngine on SSLProtocol All -SSLv2 -SSlv3 -TLSv1 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!DH SSLHonorCipherOrder On SSLCertificateFile 取得したサ-バ証明書 (公開鍵) SSLCertificateChainFile 取得した中間証明書 SSLCertificateKeyFile 取得した秘密鍵 Header set Strict-Transport-Security "max-age=31536000" ServerAdmin サ-バ-管理者の連絡先メ-ルアドレス DocumentRoot ドキュメントル-ト ServerName ドメイン名:443 </VirtualHost>
*
HTTP アクセスは、HTTPS へリダイレクトする設定。
*
『SSLProtocol』にて、プロトコルを『TLS 1.2、TLS1.1』に限定。
*
『SSLCipherSuite』は、自動生成された『/etc/httpd/conf.d/ssl.conf』からコピ-したものに『:!RC4:!DH』を追記。暗号方式から『RC4』、『DH』の使用を無効にする。
*
『SSLHonorCipherOrder』にて、クライアントとの暗号方式をクライアント側ではなく、サ-バ-側で決定する。
*
『Header set Strict-Transport-Security』にて、このドメインが HTTPS 接続を強制するようにする。
Let’s Encrypt もそうだけど、 SSL の設定も先人達が全部やってくれてた。
それだけ HTTPS 対応が当たり前ってことなんだな…。
参考元
- SSL Server Test
- 安全なWebサイトの構築方法(SSL編) ~Qualys SSL LABSでA評価を目指して~
- WordPressのHTTPSサイトをA+評価にする
- HSTS (HTTP Strict Transport Security) の導入
- 常時SSL化(https)するときのHSTS設定の方法と注意点
- Apache httpd で接続を許すSSL/TLSのバージョンを制限する方法
- vim で複数行にコメントアウトを挿入・削除する方法