この記事で分かること
- SSL/TLS証明書で、確認すべき項目
- ブラウザとコマンドでの、確認の手順
- 警告が出る主な原因と、直し方
- 古い通信方式(TLS 1.0、1.1)を止める考え方
要点は三つです。期限、ホスト名、証明書のチェーン(中間証明書)の三つを確かめること。通信方式は、TLS 1.2と1.3に対応させ、古い方式は止めること。そして、期限の管理は、人の記憶に頼らず、自動更新と監視で行うことです。
確認すべき項目
| 項目 | 確認すること | 問題がある時の症状 |
|---|---|---|
| 有効期限 | 期限が切れていないか、近づいていないか | ブラウザに、接続がプライベートではないという警告が出る |
| ホスト名の一致 | 証明書の対象に、アクセスするドメインが含まれているか(wwwの有無、サブドメイン) | 名前が一致しないという警告が出る |
| 証明書のチェーン | 中間証明書が、サーバーから送られているか | PCのブラウザでは開けても、スマホや古い環境で警告が出る |
| 通信方式(TLSのバージョン) | TLS 1.2と1.3に対応し、古い方式を受け付けていないか | 診断ツールで、古い方式が有効という指摘が出る |
| 暗号スイート | RC4や3DESなどの弱い方式を受け付けていないか | 診断ツールで、弱い暗号が有効という指摘が出る |
ブラウザでの確認
ブラウザのアドレス欄の、鍵のマークをクリックすると、証明書の情報を開けます。発行先(対象のドメイン)、発行元、有効期間が表示されます。警告のページが出る場合は、その理由(期限切れ、名前の不一致など)が書かれています。
コマンドでの確認
OpenSSLが使える環境では、次のコマンドで、証明書の期間と対象を確認できます。
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
notAfter が期限です。対象のドメイン名を含む(SAN)かは、次のコマンドで見られます。
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -ext subjectAltName
通信方式への対応は、バージョンを指定して接続できるかで確認します。
openssl s_client -connect example.com:443 -servername example.com -tls1_2 </dev/null
openssl s_client -connect example.com:443 -servername example.com -tls1_3 </dev/null
古い方式(-tls1、-tls1_1)で接続できてしまう場合は、古い方式が有効です。お使いのOpenSSLの版によっては、古い方式のオプションが使えないことがあります。
警告が出る主な原因と直し方
有効期限が切れている
証明書を更新して、サーバーに反映します。再発を防ぐには、自動更新を設定します。Let's Encryptなどの無料の証明書は、有効期間が短い(90日)ため、自動更新が前提です。有料の証明書でも、有効期間の上限は短くなる方向にあり、手動での更新に頼る運用は続けにくくなっています。
ホスト名が一致しない
証明書の対象(SAN)に、実際にアクセスされるすべての名前を含めます。example.com だけで、www.example.com を含めていない例が典型です。新しいサブドメインを追加した時にも、確認が必要です。
中間証明書が不足している
サーバーに、自分の証明書だけを置いて、発行元(中間認証局)の証明書を置いていないと、環境によって検証に失敗します。認証局から配布される「チェーン」付きのファイル(fullchain)を、サーバーに設定します。
古い通信方式が有効
TLS 1.0とTLS 1.1は、IETFがRFC 8996で使用の廃止を定めています。サーバーの設定で、TLS 1.2以上だけを許可します。nginxの例です。
ssl_protocols TLSv1.2 TLSv1.3;
Apacheの例です。
SSLProtocol -all +TLSv1.2 +TLSv1.3
CDNの背後にある場合は、CDN側の「最小のTLSバージョン」の設定を確認します。サーバーの設定だけでは、利用者に見える通信方式は変わりません。
期限切れを防ぐ運用
- 自動更新を設定し、更新が成功したかをログで確認する
- 期限の30日前に通知する監視を入れる(外部の監視サービスや、簡単なスクリプトで構いません)
- 管理しているドメインとサブドメインの、証明書の一覧を作っておく
- サーバーの移行や、CDNの導入のあとに、外から確認することを忘れない
Webサイト セキュリティチェッカー「Security Checker X」は、URLを入力するだけで、証明書の有効期限、ホスト名の一致、中間証明書の不足、TLSのバージョンと暗号スイートの状態、HTTPからHTTPSへの転送などを診断できます。登録は不要です。
よくある質問
SSL証明書とTLS証明書は、違うものですか?
同じものを指します。通信を暗号化する方式の名前が、以前はSSL、現在はTLSになりました。慣習として「SSL証明書」という呼び方が残っています。
証明書が有効なのに、警告が出るのはなぜですか?
有効期限以外にも、ホスト名の不一致、中間証明書の不足、ページ内にHTTPの資源が混ざっていること(混在コンテンツ)などが原因になります。警告の文面と、開発者ツールの表示から、原因を絞ってください。
TLS 1.0や1.1を止めると、困ることはありますか?
ごく古い端末やソフトウェアから接続できなくなります。アクセスの記録で、古い方式での接続がどの程度あるかを確認してから、止めてください。
HSTSを設定する前に、確認することはありますか?
証明書が確実に更新される運用になっていることを確認してください。HSTSが有効な間は、証明書のエラーを、利用者が回避して進めなくなります。
関連記事
- Webサイトのセキュリティチェック項目30選|確認方法つき一覧表
- セキュリティヘッダーの設定方法|HSTS・CSPの設定例つき
- WordPressの脆弱性を確認する方法|本体・プラグインの更新と対処の手順
関連する用語
サイトの設定を無料で確認する
この記事の内容を、自分のサイトで確かめたい時は、Webサイト セキュリティチェッカー「Security Checker X」をお使いください。URLを入力するだけで、登録なしで診断できます。










コメント