読者です 読者をやめる 読者になる 読者になる

SSLの設定を見直した

とあるWebサーバのSSLの設定を見直して変更しました。

 

本番環境をメンテナンスするのは初めてで、なかなかのプレッシャーでしたが、無事に終わったのでまとめます。

※実際に本番環境に設定した内容とは若干異なります。

 

SSLの設定状況や信頼性を確認

以下のようなサイトでサーバのSSLの設定状況が分かります。

SSL Server Test (Powered by Qualys SSL Labs)

設定状況や信頼性がわかる!SSLチェックツール|GMOグローバルサイン

 デフォルト設定のままだとF判定なんですかね。

これが便利なのは、どの設定を見直せばいいのか教えてくれることです。

 

プロトコルの設定 

SSLProtocol all ­SSLv3 ­SSLv2

POODLEがありましたし、SSLv2、SSLv3は無効にします。 

 

暗号スイートの設定

SSLCipherSuite AES128+EECDH:AES128+EDH

SSLCipherSuite の設定が一番難しかったです。下記のような本をパラ読みしましたが短期間で理解できるような代物ではない。

FREAK、Logjam対策で!EXPORTを設定に含めるのは必須ですね。

新版暗号技術入門 秘密の国のアリス

新版暗号技術入門 秘密の国のアリス

 

 

マスタリングTCP/IP SSL/TLS編

マスタリングTCP/IP SSL/TLS編

 

 今回は下記のようなサイトに頼らさせていただきました。

脆弱性に対応した、最新の暗号スイート設定を提供してくれます。

Generate Mozilla Security Recommended Web Server Configuration Files

BetterCrypto⋅org

 

暗号スイート設定時はサポートしている暗号方式を確認しましょう。

$ openssl ciphers ­-v 'AES128+EECDH:AES128+EDH'

 

Perfect Forward Secrecy(PFS)について

Forward secrecy - Wikipedia

これも暗号スイートの設定に含まれます。

ECDHEやDHEを優先して設定することで実現できるようです。

 

暗号選択の設定

SSLHonorCipherOder on

サーバとクライアントが通信を行なう際に、暗号選択をサーバ側で決定するようになります。

 

 中間証明書の設定

SSLCertificateChainFile <中間証明書の絶対パス>

Apacheとmod_ssl を使用しているので、SSLCertificateChainFileで設定しています。

ApacheSSLの場合は、SSLCACertificateFileで設定するそう。

chown -R root:root <中間証明書の絶対パス>
chmod 400 <中間証明書の絶対パス>

ユーザでログインして作業していたため、所有権とアクセス権をrootに変更します。

中間証明書用にディレクトリを作成してそこに中間証明書を置いたので、 chownでは-Rオプションでディレクトリの所有権も再帰的に変更しています。

 

中間証明書が証明書とマッチしているか確認

中間証明書の内容が証明書とマッチしていなくても設定は通ってしまいます。

SSLチェックツールで上手く設定できていれば消えるはずのエラーメッセージが消えないので、間違えていることが分かりました。

 

下記のサイトの"Check your certificate installation"でチェックすることが出来ます。

SSL Toolbox

確認してみると、中間証明書の中身がマッチしていないことが判明。

正しい中間証明書のリンクを表示してくれるので、コピペして差し替えました。

 

 HTTP Strict Transport Securityの設定について

Forward secrecy - Wikipedia

HTTPで接続されたものを強制的にHTTPSにするというもの。

これを設定しないとSSLチェッカーではA+になりません。

 

サブドメインも含む、ワイルドカードを使用できるのSSL証明書を使用していない場合、この設定を有効にしているとサブドメインにアクセスできなくなるらしいというのと、強制的にHTTPS接続にする必要性が感じられなかったため、今回は設定を見送りました。

[SSL]HSTS Preloadを設定したらサブドメインにアクセスできなくなる|VPS|mani-lab|mani-lab

 

"BEAST攻撃を受けやすいかもしれません"というメッセージが消えない

これで判定はAになるのですが、メッセージが消えません。

対策として RC4暗号をサポートする必要があるのですが、この暗号は度々脆弱性が報告されているため、サポートするべきではありません。無視していいと思います。

ちなみに設定すると判定はBに下がります。

 

最後に

IPAから SSL/TLS 暗号設定ガイドラインがでました。とても分かりやすくまとまっていると思います。

http://www.ipa.go.jp/files/000045645.pdf

またSSLの設定変更のお話をいただく前に、こちらのエントリーをたまたま読んでいたので、スムーズに進めることができました。(こちらはNginxですが)

postd.cc