常時SSLの構築において技術者が注意すべきサーバ設定には、「セキュリティ強化の設定」「SSL/TLSネゴシエーションの負荷を下げる設定」が挙げられます。

セキュリティ強化の設定

セキュリティ強化の設定では、「Client‐Initiated Renegotiation(再ネゴシエーション)の禁止」および「TLS compressionの禁止」が重要です。再ネゴシエーションの禁止については、SSL/TLS通信では仕様上、クライアント側からSSL/TLS通信の再ネゴシエーションを要求することが認められています。しかし、再ネゴシエーションを行うと暗号化通信を一から張りなおすことになり、サーバの負荷が高くなってしまいます。これはDoS攻撃に悪用されることになるので、無効化することを強く推奨します。

TLS compressionの禁止については、TomcatやMySQL等で多数の脆弱性が報告されているためです。古いアプリケーションでは有効になっている場合があるので、必ず確認するようにいましょう。

OCSPステープリングとは、ウェブサーバがウェブブラウザの代わりにOSCPレスポンダに問い合わせ、SSLハンドシェイクの際にOCSPレスポンスをクライアントに提供するものです。またHSTSとは、サーバから“Strict‐Transport‐Security” というヘッダを返すことで、以後、そのブラウザで“www.digicert.com”と入力するとhttpではなくhttpsで暗号化した通信を行うようにさせる機能です。ただしHSTSには、モバイルの「Safari」のほか古いブラウザに対応していないという課題もあります。

SSL/TLSネゴシエーションの負荷を下げる設定

SSL/TLSネゴシエーションの負荷を下げる設定では、「OCSPステープリングに対応する」「HTTP Strict Transport Security(HSTS)を設定する」「Keep‐aliveをonにする」「画像/css/jsファイルなどはキャッシュ、データベース関連コンテンツは使用しない」などが挙げられます。

HTTP Strict Transport Security(HSTS)

-HSTSとは
サーバーから“Strict-Transport-Security”というヘッダを返すことで、以後、そのブラウザで “www.digicert.com” と入力すると HTTP ではなく HTTPS で暗号化した通信を行うよ うにさせる機能

【Apache のバーチャルホストでの設定例】

<VirtualHost *:443>
 ServerName www.digicert.com
 SSLEngine on
 Header set Strict-Transport-Security "max-age=315360000; includeSubDomains"
</VirtualHost>

-HSTSの課題
モバイルのSafariブラウザが未対応
古いブラウザに対応していない

出典元 https://developer.mozilla.org/ja/docs/Security/HTTP_Strict_Transport_Security

さらに強化するには

サーバのセキュリティをさらに強化したいときには、「Certificate Transparency(CT)対応の認証局から購入すること」や「Content Security Policy(CSP)の設定」などを行います。CTは「透かし入り証明書」と呼ばれ、認証局が証明書を発行する都度、すべての証明書発行の証跡を、第三者の監査ログに記載する仕組みです。これにより、主にウェブサイトの運営者やドメイン名の管理者が、その監査ログサーバを確認することで、自分のドメインに対して不正な証明書や、ポリシー外の認証局からの証明書が発行されていないかを検証することが可能になります。

常時SSL情報リンクナビ

TLS/SSL サーバ証明書の基本

SSL/TLS サーバ証明書について知っておくべきこと