Letsencrypt+apache2でXP IE8にも対応するCipherSuite

2017/05/18[公開] 2017/09/19[最終更新]

 ここのデフよんサイトですが、Let’s Encrypt証明書で常時SSLにしてから、Windows XPのInternet Explorer8や、Android2.3.7などの古いOSでアクセスすると「ページが表示されません」と出て、まったく開けない状態になっていました。

 たいぶ前(たしか一年以上前)に、XPで当サイトのSSLページが表示できているのを確認していたので、WordPressや自宅のDebianのApacheサーバーをアップデートしている内に、知らず知らずのうちに切り捨てていたようです。例のWannarCry騒動で久しぶりにXPパソコンをひっぱり出してきて、そうなっているのだと気付いたのです。

 XPはとっくにサポート終了しているOSなので、表示されなくてもアクセス数に影響はほぼ無いでしょうし、古い暗号化プロトコルしか対応していないので、切り捨てるのが正解でしょう。それでも、私のもうひとつのサイトではXPユーザー向けの記事をいくつか書いているので、あまり推奨できませんがXP IE8に対応させてみました。

(2017.09.19追記)このサイトのサーバーOSのアップグレードに伴い、OpenSSLのバージョン1.1.0ではこの記事の設定は無効になりました。現在、このサイトはXP IE8では表示できません。

スポンサー リンク

原因切り分け

 ではなぜ表示されなくなったのか、即答できないのでいろいろ調べました。常時SSLじゃないhttp://~の同じテーマのTwentySeventeenのサイトはXPで表示できます。index.htmlだけの静的SSLペラページで試すと、表示されないので、WordPressが要因というのは除外されます。他所さまのサイトで、Let’s Encryptの証明書を使っているWordPressサイトで、XP IE8で表示できるサイトと、できないサイトの両方があります。

 そうすると考えられるのは、Apache側ということになります。当サイトはDebian JessieのApache2.4.10OpenSSL1.0.1を使っています。他のディストリビューションだと、もっとバージョンが上のモノを採用していたりするようですが、Debianは保守的と言われてるように安定性重視なので、少し枯れ気味のバージョンが安定版となっています。以下の内容は、apache(2.4.10-10+deb8u8)、openssl(1.0.1t-1+deb8u6)が前提です。バージョン違いのApacheやNginxのことはわかりません。

SSL.confの設定

 SSL関係の設定ファイルは、/etc/apache2/mods-available/ssl.conf を開きます。

SSLProtocol

 74行目のSSLProtocolを確認します。デフォルトでSSLProtocol all -SSLv3 になっているので、これはこのまま変更しません。

#   The protocols to enable.1
#   Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
#   SSL v2  is no longer supported
SSLProtocol all -SSLv3

 SSL/TLSのプロトコルは、SSLv2,SSLv3,TSL1.0,TSL1.1,TSL1.2とありますが、SSLv2はデフォルトでサポート外、SSLv3は致命的な脆弱性があるので除外推奨の設定になっています。

 現行ブラウザーならTLSv1.2しか使わない設定で良いのですが、XP IE8などの古いTSL1.0しかサポートされていないクライアント用にこの設定になっているようです。ちなみに、XP IE6はSSLv3しか利用できないので、ここでXP IE6は切り捨てとなっています。

SSLCipherSuite

 60行目のSSLCipherSuiteで、使用する暗号化の強度の指定をしています。このデフォルト設定で、XP IE8は切り捨てられているようです。

# SSL Cipher Suite:
# List the ciphers that the client is permitted to negotiate. See the
# ciphers(1) man page from the openssl package for list of all available
# options.
# Enable only secure ciphers:
SSLCipherSuite HIGH:!aNULL

 ChiperSuiteの設定は個別に設定すると、TLS_RSA_WITH_3DES_EDE_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 というふうに、難解な呪文を唱えないといけないので、HIGHMEDIUM 、LOW とまとめて指定できるようになっているようです。:! と続けることで一部マイナスしていくことができます。(参考:OpenSSL Chipers

XP IE8対応に書き換え

 これを理解して自分で考えることはできないので、検索して参考サイトを元に60行目を変更しました。一部、SSLv2はデフォルトで無効なので、それは除いています。(参考サイト:Cross Trust サポート

SSLCipherSuite ALL:!aNULL:!EXP:!MD5:!RC4:!LOW:+HIGH:+MEDIUM

 もうひとつMozilla wikiのページが詳しく載せていました。こちらは長いですが個別に指定しています。私はこちらを利用させていただきました。(参考サイト:Mozilla wiki

SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

Apacheリロード

 ssl.confを書き換えて保存したら、Apacheをリロードして変更が反映されました。

service apache2 reload

動作確認

 SSL証明書のテストは、https://www.ssllabs.com/ssltest/が便利で詳しく情報が出てきます。

xp-ie8-ssl5
評価は変更なしのA-

 Aマイナスなのは、デフォルト状態から変わらずです(AマイナスをAにするFSサポート対応は次記事にしました)。暗号化強度の変更による評価は変わりませんでした。現行では完全に非推奨ではないレベルでの変更なので、今後、TSL1.0が非推奨になったらその時また対応すればよいでしょう。

xp-ie8-ssl3
112bitの暗号化が追加されました。(WEAKの注意表示あり)
xp-ie8-ssl4
XP IE8対応になりました。

設定完了

 以上で、XPのInternet Explorer 8でここのサイトが表示できるようになりました。証明書の警告画面が出るかもしれませんが、まったく開かないという状態は避けることができました。

 結局、以前はXP IE8でもSSLページが表示されていたのに、いつの間にか表示されなくなったのは、ChiperSuiteのHIGHグループの内容が変更になったのが原因ということがわかりました。参考サイト↓

https://www.openssl.org/blog/blog/2016/08/24/sweet32/

スポンサー リンク

こちらの記事もどうぞ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です