🆘 トラブルシューティング
SSL/TLS のよくある問題と解決方法
ブラウザ警告、中間CA証明書漏れ、混在コンテンツ、HSTS、HTTP/2、TLS バージョン関連など、SSL/TLS 運用でよくあるトラブルの原因と解決方法を網羅。
⚠️ ブラウザに「保護されていません」と表示される
🔍 原因と確認方法
| 原因 | 確認コマンド |
|---|---|
| 中間 CA 証明書の漏れ | openssl s_client -connect example.com:443 -showcerts |
| コモンネーム不一致 | openssl s_client -connect example.com:443 -servername example.com |
| 証明書の有効期限切れ | echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates |
| 混在コンテンツ | Chrome DevTools の Console タブで Mixed Content 警告を確認 |
💡 オンラインツールで素早く診断
SSL Labs SSL Test(無料)で総合的に診断できます。
🔗 中間 CA 証明書のインストール漏れ
最も頻繁に発生するトラブルです。
🔍 症状
- PC のブラウザでは問題なくアクセスできる
- iOS / Android のブラウザで警告が出る
- Java / curl / wget からアクセスするとエラー
- SSL Labs で 「Chain issues: Incomplete」と表示
🛠️ 解決方法(Apache)
SSLCertificateChainFile /etc/httpd/ssl/intermediate.crt
🛠️ 解決方法(Nginx)
# サーバ証明書と中間CA証明書を結合
$ cat example.com.crt intermediate.crt > example.com.fullchain.crt
ssl_certificate /etc/nginx/ssl/example.com.fullchain.crt;
🔀 混在コンテンツ(Mixed Content)
HTTPS ページ内に http:// リソース(画像・CSS・JavaScript)が混在していると警告が出ます。
🛠️ 解決方法
- すべての内部リソースを
https://に変更 - WordPress なら Really Simple SSL プラグインで自動化
- サーバ側で CSP ヘッダを使って自動置換:
# Nginx
add_header Content-Security-Policy "upgrade-insecure-requests" always;
🔒 HSTS(HTTP Strict Transport Security)の設定
# Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
⚠️ HSTS は元に戻すのが困難
HSTS を設定すると、設定期間中はブラウザが HTTPS を強制します。本番運用前に必ずテストしてください。
🚀 HTTP/2 が有効化されない
🛠️ 解決方法
- サーバが HTTP/2 をサポートしているか確認(Apache 2.4.17+、Nginx 1.9.5+)
- HTTPS でアクセスしているか(HTTP/2 は HTTPS 必須)
- 設定で
Protocols h2 http/1.1(Apache)またはhttp2 on;(Nginx)
🛡️ TLS バージョン互換性
💡 2026年の推奨設定
TLS 1.2 / TLS 1.3 のみ有効。TLS 1.0 / 1.1 は主要ブラウザでサポート終了。PCI DSS 4.0 でも禁止されています。