SSL証明書エラーは、訪問者がサイトに安全にアクセスすることを妨げます。このガイドでは、すべての一般的なエラーコード、その意味、および修正方法を解説します。訪問者の場合もサイト所有者の場合も対応します。
最も一般的なエラーについては、専用ガイドをご覧ください:「この接続ではプライバシーが保護されません」の修正 →
エラーリファレンス表
| エラーコード(Chrome) | Firefoxの対応エラー | 意味 | 修正 |
|---|---|---|---|
NET::ERR_CERT_DATE_INVALID | SEC_ERROR_EXPIRED_CERTIFICATE | 証明書の有効期限切れ | 証明書を更新 |
NET::ERR_CERT_COMMON_NAME_INVALID | SSL_ERROR_BAD_CERT_DOMAIN | ドメインが証明書と一致しない | 正しいドメインの証明書を取得 |
NET::ERR_CERT_AUTHORITY_INVALID | SEC_ERROR_UNKNOWN_ISSUER | 自己署名または信頼されていない認証局 | Let’s Encryptを使用 |
NET::ERR_CERT_REVOKED | SEC_ERROR_REVOKED_CERTIFICATE | 証明書が失効している | 新しい証明書を取得 |
NET::ERR_SSL_PROTOCOL_ERROR | SSL_ERROR_RX_RECORD_TOO_LONG | TLSハンドシェイクの失敗 | サーバー設定を確認 |
NET::ERR_SSL_VERSION_OR_CIPHER_MISMATCH | SSL_ERROR_NO_CYPHER_OVERLAP | 共通のTLSバージョン/暗号方式がない | TLS 1.2以上を有効化 |
ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN | — | HPKPピンが一致しない | HPKPピンを更新または削除 |
ERR_CERTIFICATE_TRANSPARENCY_REQUIRED | — | CTログエントリが見つからない | CT準拠の認証局から再発行 |
詳細なエラー解決策
ERR_CERT_DATE_INVALID — 証明書の有効期限切れ
原因: 証明書のNot After日付が過ぎています。90日のLet’s Encrypt証明書の場合、更新を忘れると発生します。
訪問者の修正: デバイスの日時を確認してください。時計がずれていると、有効な証明書が有効期限切れに見えます。
所有者の修正:
# 実際の有効期限を確認
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate
すぐに更新してください。ファイルを置き換えてサーバーをリロードしてください。今後の防止のために監視を設定してください。
ERR_CERT_COMMON_NAME_INVALID — ドメインの不一致
原因: 証明書がexample.comに発行されているのにwww.example.comにアクセスしている(またはその逆)、あるいは証明書が全く別のドメインをカバーしています。
所有者の修正:
# 証明書がカバーするドメインを確認
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -ext subjectAltName
必要なすべてのドメインを含む新しい証明書を取得してください。GetHTTPSでexample.comとwww.example.comの両方を追加してください。
ERR_CERT_AUTHORITY_INVALID — 信頼されていない認証局
原因: 証明書が自己署名であるか、未知の認証局が発行しているか、中間証明書チェーンが不完全です。
所有者の修正:
- 自己署名の場合 → Let’s Encrypt証明書に置き換え
- チェーンが不完全な場合 →
fullchain.pem(Nginx)を使用するかSSLCertificateChainFile(Apache)を追加 - 未知の認証局の場合 → 信頼された認証局に切り替え
ERR_SSL_PROTOCOL_ERROR — ハンドシェイクの失敗
原因: サーバーのTLS設定が壊れています。証明書のパスが間違っている、ファイルが破損している、設定が誤っています。
所有者の修正:
# TLS接続をテスト
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
# 証明書と鍵が一致するか確認
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
# ハッシュが一致する必要があります
よくある原因:サーバー設定のファイルパスが間違っている、証明書と鍵が異なるセッションのもの、ファイル権限が厳しすぎる。
ERR_SSL_VERSION_OR_CIPHER_MISMATCH — 互換性のあるTLSがない
原因: サーバーがブラウザが廃止した古いTLSバージョン(1.0/1.1)のみをサポートしているか、ブラウザがサポートしない暗号スイートを使用しています。
所有者の修正:
# Nginx -- 最新のTLSを有効化
ssl_protocols TLSv1.2 TLSv1.3;
# Apache
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
混合コンテンツの警告
原因: HTTPSページが画像、スクリプト、CSSをHTTP経由で読み込んでいます。
これは証明書エラーではありません。証明書は正常ですが、ページが安全でないリソースを参照しています。混合コンテンツの修正ガイド →
診断ワークフロー
SSLエラーが表示された場合、この順序で対応してください:
1. エラーコードを確認 → カテゴリを特定
↓
2. 証明書の詳細を確認
openssl s_client -connect domain:443 -servername domain
↓
3. 有効期限切れ? → 更新
ドメイン不一致? → 正しいドメインで再発行
チェーンが不完全? → fullchain.pemを使用
自己署名? → Let's Encryptに切り替え
設定エラー? → ファイルパスと権限を確認
↓
4. 修正後 → サーバーをリロード、ブラウザキャッシュをクリア、確認
オンライン診断ツール
| ツール | URL | 確認内容 |
|---|---|---|
| SSL Labs | ssllabs.com/ssltest | 完全なSSL監査(A-Fの評価) |
| SSL Checker | sslshopper.com/ssl-checker | チェーン、有効期限、ドメイン一致 |
| Certificate Search | crt.sh | 証明書の透明性ログ |
| Why No Padlock | whynopadlock.com | 混合コンテンツの検出 |
よくある質問
エラーを修正したのにブラウザにまだ表示される
ブラウザキャッシュをクリアしてください(Ctrl+Shift+Delete)。またはシークレットウィンドウでテストしてください。ブラウザはSSL状態をキャッシュし、HSTSがキャッシュされた判断を強制している可能性があります。Windowsでは、SSL状態もクリアしてください:インターネットオプション → コンテンツ → SSL状態のクリア。
一部のブラウザでのみエラーが表示される
ブラウザによってトラストストアとキャッシュが異なります。最も一般的なのは、一部のブラウザがキャッシュから補完できるが他のブラウザにはない、不完全な証明書チェーンです。サーバーで完全なチェーンを配信して修正してください。
SSLエラーを防ぐにはどうすればいいですか?
- 証明書の有効期限を監視する — 90日中60日目にアラートを設定
cert.pemの代わりにfullchain.pemを使用する — チェーンエラーを防止- 証明書にすべてのドメインバリエーション(wwwと非www)を含める
- 本番サーバーにCertbotによる自動更新を設定する
- すべての変更後にSSL Labsでテストする