2016年5月21日土曜日

Qualys SSL Server Testでレートを Aプラスにする


Qualys SSL LabsのSSL Server Testで、A評価を得てみる。


環境

  • OS: Amazon Linux 2016.03
  • Webサーバ: Apache 2.4.18
  • OpenSSL: 1.0.1k
  • サーバ証明書: Let's Encrypt(certbot)



デフォルト設定
SSLProtocol all -SSLv3
SSLHonorCipherOrder on

B
This server accepts RC4 cipher, but only with older protocol versions. Grade capped to B.


SSLCipherSuiteも指定(コメントアウトされている推奨?設定+RC4も禁止)
SSLCipherSuite HIGH:MEDIUM:!RC4:!aNULL:!MD5

A


HSTSを追加
Header always set Strict-Transport-Security "max-age=15768000"

A+
HTTP Strict Transport Security (HSTS) with long duration deployed on this server.


さらにProtocol Supportを満点にするには、TLS1.2のみにすればOK。
Key ExchangeとCipher Strengthを満点にするには?SSLCipherSuiteをきちんと指定する??



参考



certbot (Let's Encrypt)を Amazon Linuxにインストール


以前一度挫折した(古いAmazon Linuxをアップデートして使っているためだと思われる)が、certbotに改名後に試してみたら、できた。


前提

  • gitはインストール済み
  • WebサーバはApache



手順

  1. sudo easy_install pip
  2. sudo pip install --upgrade pip
  3. sudo /usr/local/bin/pip install --upgrade virtualenv
  4. (作業用ディレクトリで)
    git clone https://github.com/certbot/certbot
  5. cd certbot
  6. ./certbot-auto certonly --webroot -w /var/www/html -d ドメイン名 --agree-tos -m メールアドレス --debug
  7. /etc/httpd/conf.d/ssl.confの下記箇所を変更する。(Apache2.4.8より前のバージョン場合は微妙に違うので参考サイト参照。)
    SSLCertificateFile /etc/letsencrypt/live/ドメイン名/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem
  8. httpdを再起動


証明書の自動更新
証明書の期限は90日なので、cronで定期更新させる。cronがメールを飛ばすように設定してあれば結果がメールで来る。

(例:月に1回更新する場合。日時は月初にすると混雑しそうなので、適当にずらした方がよいかも。)
45 3 12 * * ./certbot/certbot-auto renew && sudo service httpd reload

(2016/6/25 追記)
--debugも付けた方がよいかも?参考→Let's Encryptの cronによる実行が動かなくなった時の対策
(追記終わり)

期限まで30日以上ある場合は更新されない。それでも更新したい場合は--force-renewオプションを付ける。
上記例を試した時はまだ更新されなかったので、本当にこれでよいかはその日が来てから確認する。(--debug無しとか大丈夫か?タイミングによっては、月イチだと期限切れになるケースがあるかも?)


備考的な

  • Aapcheは停止しなくても大丈夫。(webrootオプションを使う場合はいいらしい。)
  • 証明書生成時にポート443は開いてなくても大丈夫。
  • /var/www/htmlに.well-knownディレクトリが残る。消してもいいのかな?



さよなら自己署名!さよならオレオレ証明書!


参考



2016年5月1日日曜日

シマンテックのクロスルートなサーバ証明書が使えなくなる?

2016年4月のマイクロソフト社のルート証明書情報更新の影響と対策に関するご案内(続報) | Symantec

意訳
Microsoftが2016年4月19~20日(日本時間)に配信するルート証明書情報の更新により、シマンテックのクロスルートを付けているサーバ証明書を使っている場合にWindows上の(Firefox以外の)ブラウザで警告が出るようになる。
回避するにはクロスルートを外す。


このMicrosoftの更新はWindows Updateとは別らしい。
なお、4/19~20となっているが4/20になってMicrosoftが更新を延期したらしい。(結局、4/26~27に実施。)


クロスルートを外すと、ガラケー等で使えなくなるのでは?

クロスルート設定用証明書の設定について、どのような対応が必要でしょうか? | Symantec のPDFによると、ガラケーへの影響は2機種のみ。スマホでもいくつか影響があるが、発売が2010年以前なので影響は少なそう。SHA-1を切り捨てたことにより、既に古いガラケーの多くはSSL/TLSの対象外になっていた。

ちなみに、 Windowsが遂にSymantecG1ルートを捨てるらしい - 情緒不安定。 によるとクロスルート証明書のIssuerが問題なので、中間CA証明書(クロスルートを含む)自体がG1でなくても影響がある。(シマンテックがクロスルート証明書として配布している VeriSign Class 3 Public Primary Certification Authority - G5 のIssuerがG1なので。)


クロスルートを付けている場合に問題が発生するクライアントPC(Windows)の条件を見ると、

条件3 : クライアント環境のルート証明書ストア(Windows Trusted Root Store)に、G5ルート証明書*2が含まれていない場合
*2「VeriSign Class 3 Public Primary Certification Authority - G5」
とある。

おのれSSL!謀ったな・・!! | ツチノコブログ によると、
最近のブラウザではPC/スマフォ問わずにG5証明書が予めインポートされています。ですがwindowsXPのSP2以前やフィーチャーフォンの一部端末はG5証明書がインポートされておらず、『VeriSign Class 3 Public Primary CA』(通称:G1証明書)がインポートされています。

【追記有(2016.04.22)】Windowsが遂にSymantecG1ルートを捨てるらしい - 情緒不安定。 でも、
SymantecG5ルート証明書が入っていないパソコン。
つまり、レガシーなパソコンです。(WindowsXP以前、WindowsUpdateなどを定期的に行ってないと怪しいです。)
とあるので、Windows Vista以降は大丈夫?

でも 2016年4月のマイクロソフト社のルート証明書情報更新の影響と対策に関するご案内(続報) | Symantec によると、XP以降はG5証明書が初期状態ではインストールされていなくて、必要になったらインストールされるらしい。インストールされていない状態でシマンテックのクロスルートに当たると、G1の方を読んでしまうのでエラーになってしまう。


HTTPS セキュリティ証明書における SHA-1 から SHA-256 へのハッシュアルゴリズムの変更について によると、クロスルート無しでクライアント(接続元)がJavaの場合、
1.4.2 より前 → 接続できない
1.4.2 ~ 1.6.0_18 → ごにょごにょしてG5をCAストアに追加すれば接続できる
1.6.0_19 以上 → 接続できる

Java SE 6 Update 19 Release Notes. から Bug ID: JDK-6904162 Add new VeriSign root CA certificates to JRE and remove some old/unused ones を見ても、「verisignclass3g5ca」とあるので6u19でG5が追加されたようだ。


シマンテックによるG5のテストサイトは Symantec SSL test (中間CAがクロスルート無しの「Symantec Class 3 EV SSL CA - G3 」で、そのIssuerがG5。)

ブログ アーカイブ

tags