SSL証明書のエラーが出たときの確認方法|期限切れ・設定ミスの原因を調べる手順
WebサイトをHTTPSで公開していると、「この接続ではプライバシーが保護されません」「証明書の有効期限が切れています」といったSSL証明書のエラーが表示されることがあります。
SSL証明書のエラーは、証明書の期限切れだけが原因とは限りません。
ドメイン名との不一致、証明書の設定ミス、NginxなどWebサーバーの設定、更新処理の失敗など、いくつかの原因が考えられます。
原因が分からない場合は、まず「証明書そのものに問題があるのか」「サーバーの設定に問題があるのか」を切り分けていきましょう。
SSL証明書のエラーで最初に確認すること
ブラウザでHTTPS接続したときにエラーが表示されたら、まずエラーメッセージを確認します。
代表的なものには、
- 証明書の有効期限が切れている
- 証明書が信頼されていない
- 証明書のドメイン名が一致しない
- 証明書が正しく設定されていない
- HTTPS接続そのものが正常に確立できない
などがあります。
表示されたエラーを確認せずに証明書を再発行するのではなく、どの部分で問題が起きているのかを確認することが重要です。
SSL証明書の有効期限を確認する
まず確認したいのが証明書の有効期限です。
Linuxサーバーで証明書ファイルの場所が分かっている場合は、opensslを使って確認できます。
openssl x509 -in /path/to/certificate.pem -noout -dates
実行すると、証明書の開始日時と終了日時を確認できます。
例えば、
notBefore=Sep 01 00:00:00 2026 GMT
notAfter=Nov 30 23:59:59 2026 GMT
のように表示されます。
notAfterが現在の日付より前になっていれば、その証明書は期限切れです。
ただし、実際にWebサーバーが利用している証明書と、確認したファイルが同じとは限りません。
そのため、証明書ファイルだけでなく、実際のHTTPS接続で提示されている証明書も確認することが大切です。
ブラウザで証明書を確認する
Chromeなどのブラウザでは、HTTPS接続時の証明書情報を確認できます。
アドレスバーの鍵アイコンなどから接続情報を開き、証明書の詳細を確認します。
ここでは、
- 発行先
- 発行者
- 有効期間
- 証明書チェーン
などを確認できます。
「証明書は存在するのにエラーになる」という場合は、発行先のドメイン名がアクセスしているドメインと一致しているかも確認してください。
ドメイン名が一致しているか確認する
SSL証明書には、どのドメインに対して発行されたものなのかという情報があります。
例えば、
example.com
にアクセスしているのに、証明書が別のドメイン向けになっていれば、ブラウザは警告を表示します。
よくあるのが、
example.com
www.example.com
の扱いです。
設定によっては、片方だけ証明書の対象になっていることがあります。
そのため、
example.comwww.example.com
の両方を利用している場合は、それぞれが正しい証明書で処理されているか確認してください。
NginxのSSL設定を確認する
NginxをWebサーバーとして利用している場合は、SSL設定も確認します。
設定ファイルの中に、
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
}
のような設定があります。
実際の環境ではパスや設定内容が異なりますが、少なくとも、
- HTTPSの443番ポートを受け付けているか
server_nameが正しいか- 証明書ファイルのパスが正しいか
- 秘密鍵のパスが正しいか
を確認します。
設定を変更した場合は、いきなり再起動するのではなく、まず設定ファイルの構文を確認します。
sudo nginx -t
問題がなければ、Nginxをリロードします。
sudo systemctl reload nginx
環境によってはサービス名や設定方法が異なるため、実際の構成に合わせて確認してください。
証明書を更新したのにエラーが消えない場合
「証明書を更新したのに、ブラウザでは古い証明書が表示される」というケースもあります。
この場合は、次のような原因を考えます。
- Nginxが古い証明書を参照している
- 証明書更新後に設定が反映されていない
- 別のサーバーへアクセスしている
- リバースプロキシやロードバランサー側に古い証明書が設定されている
- CDN側で証明書を管理している
特に複数のサーバーを利用している環境では、証明書を更新したサーバーと、実際にブラウザから接続しているサーバーが異なることがあります。
Let’s Encryptを利用している場合
無料のSSL証明書としてLet’s Encryptを利用している環境では、証明書の自動更新が設定されていることがあります。
Certbotを利用している場合は、
sudo certbot certificates
で管理している証明書を確認できます。
また、自動更新の状態を確認するために、
sudo systemctl status certbot.timer
などを確認できる環境もあります。
ただし、OSやCertbotの導入方法によって設定は異なります。
「Let’s Encryptだから自動更新される」と考えるのではなく、実際に自動更新の仕組みが動作しているかを確認することが重要です。
自動更新に失敗する主な原因
SSL証明書の自動更新が失敗する原因として、次のようなものがあります。
- DNS設定が変更されている
- ドメインがサーバーを正しく向いていない
- 80番または443番ポートの設定に問題がある
- ファイアウォールで必要な通信を遮断している
- Nginxなどの設定が変更された
- 更新処理に必要なファイルやディレクトリへアクセスできない
- サーバー自体が停止していた
証明書の更新エラーが発生した場合は、証明書だけを見るのではなく、DNS・Webサーバー・ファイアウォールまで確認する必要があります。
DNSを変更した直後なら注意する
DNS設定を変更した直後にSSL証明書のエラーが出た場合は、DNSも確認してください。
例えば、
dig example.com
を使って、現在どのIPアドレスが返っているか確認できます。
期待しているサーバーのIPアドレスと異なる場合、ブラウザは別のサーバーへ接続している可能性があります。
そのサーバーに正しいSSL証明書が設定されていなければ、HTTPSエラーが発生します。
HTTPS接続そのものを確認する
ブラウザだけでは原因が分かりにくい場合、curlを使ってHTTPS接続を確認する方法もあります。
curl -I https://example.com
HTTPステータスなどを確認できます。
証明書の詳細まで確認したい場合は、
curl -v https://example.com
を使う方法があります。
出力にはTLS接続に関する情報が含まれるため、証明書やHTTPS接続の問題を調べるときに役立ちます。
ただし、出力には環境によってさまざまな情報が含まれるため、公開する場合は認証情報などが含まれていないか確認してください。
SSL証明書のエラーを確認する順番
原因が分からない場合は、次の順番で確認すると整理しやすくなります。
1.ブラウザのエラー内容を確認する
まず、証明書の期限切れなのか、ドメイン不一致なのかを確認します。
2.アクセスしているドメインを確認する
example.com
www.example.com
など、実際にアクセスしているドメインが正しいか確認します。
3.証明書の有効期限を確認する
証明書のnotAfterなどを確認します。
4.証明書の対象ドメインを確認する
アクセスしているドメインが証明書の対象になっているか確認します。
5.DNSを確認する
dig example.com
などで、正しいサーバーを向いているか確認します。
6.Nginxなどの設定を確認する
証明書ファイル、秘密鍵、server_name、443番ポートなどを確認します。
7.設定テストを実行する
Nginxなら、
sudo nginx -t
で設定を確認します。
8.証明書の自動更新を確認する
Let’s Encryptなどを利用している場合は、更新処理が正常に動作しているか確認します。
SSL証明書のエラーでやってはいけないこと
SSLエラーが出たときに、原因を確認せず証明書を何度も再発行するのは避けたほうが安全です。
また、
- HTTPSを無効にする
- ブラウザの警告を無視する
- 証明書ファイルを無条件に削除する
- 秘密鍵を公開する
- 設定を一度に大量変更する
といった対応もおすすめできません。
特に秘密鍵は重要な認証情報です。
ログや設定を誰かに見せる場合でも、秘密鍵の内容やパスワードなどは公開しないようにしてください。
SSL証明書のエラーは「証明書だけ」を見ない
SSL証明書の問題は、一見すると証明書だけのトラブルに見えます。
しかし実際には、
ドメイン
↓
DNS
↓
サーバー
↓
Webサーバー
↓
SSL/TLS
↓
ブラウザ
という複数の仕組みが関係しています。
例えばDNSが間違っていれば、正しい証明書を設定したサーバーにアクセスできません。
また、証明書が正しくてもNginxが別の証明書を読み込んでいれば、ブラウザにはエラーが表示されることがあります。
そのため、「証明書を更新すれば終わり」と考えず、接続全体を順番に確認することが大切です。
まとめ
SSL証明書のエラーが発生したときは、まずブラウザに表示されたエラー内容を確認し、その後、
- 証明書の有効期限
- ドメイン名
- DNS
- NginxなどのWebサーバー設定
- 443番ポート
- 証明書の自動更新
を順番に確認します。
特に証明書を更新したのにエラーが残っている場合は、実際のWebサーバーがどの証明書を使用しているのかを確認することが重要です。
SSLエラーは証明書そのものだけでなく、DNSやWebサーバー設定が原因になっていることもあります。
原因を一つずつ切り分ければ、不要な再発行や設定変更を繰り返さずに問題を特定しやすくなります。
SSL証明書の期限が切れるとどうなりますか?
ブラウザにHTTPS接続の警告が表示され、通常どおりWebサイトを閲覧できなくなる場合があります。
SSL証明書を更新したのに古い証明書が表示されるのはなぜですか?
Nginxなどが古い証明書を参照している、更新後の設定が反映されていない、別のサーバーへ接続しているなどの可能性があります。
Let’s EncryptならSSL証明書は自動更新されますか?
自動更新の仕組みを設定している環境では自動更新できますが、すべての環境で自動的に更新されるとは限りません。
実際の更新設定やタイマー、更新処理の結果を確認することが大切です。
SSL証明書のエラーはDNSが原因になることもありますか?
あります。
DNSが別のサーバーを向いていると、正しい証明書を設定したサーバーではなく、別のサーバーへ接続してしまうことがあります。
