SSL設定の話

こんにちは。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を使うなど様々な設定があると思います。