今日ではほとんどのウェブサイトのサーバーが常時SSL化を行っていて、ブラウザとウェブサーバーとのデータのやりとりでは原則的に暗号化が行われていて、基本的には通信内容は第三者からはわからないようになっており、設定が適切なら一定のセキュリティーは確保されている状態にある。しかしながら、ウェブサーバーによってはSSLの設定が不適切故に暗号化が弱かったりセキュリティー上問題となるバグ(脆弱性)が含まれていてセキュリティーが適切に確保されていない場合がある。ここではウェブサーバーを運用している人を対象に、果たして自分が動かしているウェブサーバーのSSL設定が適切かどうかの判断としてSSLテストツールの紹介およびその使い方などについて書いてみたい。
SSLテストではQualys SSL LabsのSSL Server Testがおすすめ
SSLサーバーテストではQualys SSL Labsが提供しているSSL Server Testが気軽に利用できる。テキストはすべて英語ではあるものの、指定したホストに対するSSLの設定で問題がないかどうかを簡単に確認することができる。
SSLサーバーテストの実行はかなり簡単
SSLサーバーテストの方法は極めて簡単で、入力フォームにSSLチェックを行いたいホスト名を入力してSubmitボタンを押せばよい。Submitすると自動的にSSLテストを行い、完了した段階で結果が表示される。なお、直近の結果一覧に表示させたくない場合は「Do not show the results on the boards」にチェックを入れることでチェックを行っても直近の結果一覧には表示されないようにできる。
結果画面の見方
SSLテストを完了させると結果画面が表示される。もしロードバランサーを使っているなどで複数のサーバーがヒットした場合はサーバーごとに結果が表示されるので、サーバーを選択することで結果の詳細を確認することができる。
結果画面では上から順に以下の内容となっている。
- Summary — 結果概要
- Certificarte — SSL証明書の内容
- Configuration — SSL設定
Summary
SummaryではSSLテストの結果をAからFまで、およびM・TのグレードとCertificate・Protocol Support・Key Exchange・Cipher Strengthの4つのスコア、および特記事項が表示される。
グレードは大きく分けて以下の通りとなっている。これは上記のCertificate・Protocol Support・Key Exchange・Cipher Strengthの4つのスコアのうちの最も低いものが基準になっている。
グレード | スコア・その他 |
---|---|
A | 80点以上 |
B | 65点以上 |
C | 50点以上 |
D | 35点以上 |
E | 20点以上 |
F | 20点未満 |
T | 証明書が信頼されていない |
うち、グレードAに該当する場合おいては、以下のいずれかの場合には以下のグレードに設定される。
- A+ — 警告がなく、且つmax-ageが6ヶ月以上のHTTP Strict Transport Security (HSTS)がサポートさている場合にこのグレードになる。
- A- — スコアではグレードがAだが、1つ以上の警告がある場合にこのグレードになる。
また、セキュリティーとして強固でない設定が有効な場合にグレードの上限がBやCになったり、極めて重大な脆弱性(例えばHeartbleedなど)を有している場合はFグレードになる場合がある。
Tグレードは証明書が信頼されていない場合につけられるグレードでこれはSSL証明書の有効期限が切れている、または中間認証局が信頼されていないものなどが該当する。
特記事項には以下のようなものが色分けされている。
- ピンク色の背景のものは証明書が信頼されていない、および致命的な脆弱性(例えばHeartbleed問題を抱えている、SSL 3.0が有効など)に関す警告である。
- オレンジ色の背景のものはセキュリティー上強固でない問題(例えばTLS 1.0/1.1が有効になっている、Forward Secrecyが有効になっていないなど)に関する警告である。
- 緑色の背景のものはセキュリティー上推奨される設定(例えばTLS 1.3が有効になっている、長期間のHSTSが有効になっているなど)が有効になっている旨の表示である。
- 水色の背景はセキュリティーには関わらない注意事項(例えばSNIをサポートしたブラウザしか利用できない場合など)である。
Certificate
Certificateの欄ではSSL証明書の情報が記載される。複数ある場合はそれぞれの証明書の情報がリストアップされる。
この欄ではいくつか色分けがされている項目があり、以下の目安で確認するとよい。
- 赤色で書かれているもの — ホスト名が正しくない、有効期限が切れている、認証局が信頼されていないなどの重大な問題がある
- オレンジ色で書かれているもの — 当該項目が推奨される状態になっていない
- 緑色で書かれているもの — 当該項目が推奨される状態になっている
Configuration
ConfigurationではSSLの設定状況が表示される。ここではProtocol、Cipher Suiteなどが記載される。
色つきで書かれている項目については以下のようになる。
- 赤色で書かれているもの — 重大な脆弱性を抱えている設定が有効であるもの。または何かしらのエラーが発生しているもの(たとえばhandshakeに失敗したなど)
- オレンジ色で書かれているもの — 推奨されない設定が有効なもの
- 緑色で書かれているもの — 推奨される設定が有効なもの
Protocols
TLS/SSLの各バージョンの有効/無効が表示される。投稿時点ではTLS 1.2(できればTLS 1.3も)が有効になっていて、TLS 1.1/1.0は無効になっていることが推奨される。SSL3/2が有効の場合は重大な脆弱性があると判定される。
Cipher Suite
利用可能なCipher Suiteが一覧で表示される。WEAKに該当するものが含まれていないことが推奨される。もしINSECUREのものが入っていた場合は重大な脆弱性があると判定される。
Handshake Simulation
各OSおよびブラウザでウェブページを表示しようとしたときに成功するかどうかの指標、および成功した場合に使われるCipher Suiteが一覧として表示される。
オレンジ色で表示される箇所は非推奨の状態、赤で表示されるものは脆弱性があるまたは表示に失敗するものである。緑色は推奨事項である。
Protocol Details
SSLのプロトコルの詳細情報が表示される。ここではPOODLE攻撃やHeartbleedなどの重大な脆弱性の有無、HSTSなどの推奨設定が有効かどうかの情報が表示される。
HTTP Requests
HTTPリクエストの結果が表示される。
Miscellaneous
その他の情報が表示される。テスト日時やテストにかかった時間などが表示される。
どれくらいのグレードを目指せばよいのか
目指すべきグレードはウェブサイトのターゲット層や利用者の傾向によって変わるものの、何らかの理由でWindows XPなどをサポートする必要があるといったよほど特殊な事情がなければA+グレード(CertificateとProtocol Supportは100、Key ExchangeとCipher Strengthは90以上)を目指すのがよい。
基本的にはグレードやスコアが高いほど安全性が高い一方、設定によってはWindows 7などの古いOSやブラウザをサポートしていないことで閲覧できなくなる弊害の可能性が高くなるので、そことどこまで折り合うかは方針によってかなり左右されるといえる。
最後に
今回はSSL周りのテストに関する記述を行った。10年ほど前ではSSLはログインや購入処理などセキュリティーが必要な処理に限定されていた傾向があったが、今日では個人サイトでもすべてのコンテンツでSSLが使われることが多くなってきた。しかしながら、SSLもしばしば重大な脆弱性が指摘されたりしていて、設定が不適切な状態ではセキュリティー面で不備が出てしまう。
SSLに関してはSSLテストを行うためのツールが気軽に利用できることから、チェックおよび問題があったときの解決の糸口を探す上でも是非とも活用するとよいといえる。
関連リンク
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。