本文へスキップ
重要 SSL/TLS証明書 47日間ルール正式決定 — ACME自動更新の導入を推奨しております。 Phase 2(100日へ短縮)まで 306日
300,000枚 累計発行
17,206社 利用中
19年 運営
24時間365日 自動発行
🆘 トラブルシューティング

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 でも禁止されています。