こんにちは。hacknoteのr.katoです。
webサイトのSSL通信化にはSSL証明書の指定だけではなく、いくつかの設定が必要です。今回はそれらの中の一部の紹介です。
設定例
次の設定はmozilla SSLConfiguration Generatorというmizillaの公開しているSSL設定の自動生成の一例です。一つずつ紹介していきます。
<VirtualHost *:443> SSLEngine on SSLCertificateFile /path/to/signed_certificate SSLCertificateChainFile /path/to/intermediate_certificate SSLCertificateKeyFile /path/to/private_key # HTTP Strict Transport Security (mod_headers is required) (63072000 seconds) Header always set Strict-Transport-Security "max-age=63072000" </VirtualHost> # intermediate configuration, tweak to your needs SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder on
Header always set Strict-Transport-Security “max-age=63072000”
HSTSと略されるもので、最初にサイトにhttpsでアクセスしてStrict-Transport-Securityヘッダーが返されると、ブラウザーがこの情報を記録し、以降はhttpを使用してサイトを読み込みもうとすると、自動的にhttpsを使用するようになる機能です。 max-ageで期限を設定できます。httpアクセスによって生じる中間者攻撃を未然に防ぐことを目的に設定されます。(参照: MDN web docs)
SSLProtocol
SSL/TLS通信の一部には脆弱性の含まれるバージョンがあるので、そのバージョンを避けるために設定します。
SSLCipherSuite
この設定で使用できる暗号形式を明示的に指定する事ができます。
SSLHonorCipherOrder
SSLのダウングレード攻撃ができないように、暗号形式をサーバー側で決定できるように設定することができます。
おわりに
ほかにもRSAではなくECDSAを使うだとか、SHA256を使うなど様々な設定があると思います。