SSLエラーで一部の環境のみ表示されない原因と対応

掲載日
更新日

結論

ブラウザによってWebサイトへアクセスできたりできなかったりしており、アクセスできない場合はブラウザの鍵マークが赤くなっている場合、中間証明書に問題があるかもしれません。

有効期限が切れているか調査し、切れている場合は再発行してサービス再起動を行います。

調査方法

まずopensslコマンドで中間証明書がどうなっているか確認します。

openssl s_client -connect [問題の起きているサイトのドメイン]:443 -showcerts

コマンドを実行すると、以下のようなログが出てきます。

Connecting to XXX.XXX.XXX.XXX
CONNECTED(00000003)
depth=0 CN=[問題の起きているサイトのドメイン]
verify error:num=20:unable to get local issuer certificate
verify return:1
... (略) ...

この時、上記のようにverify errorが出ている場合問題があります。

※ 問題が無い場合は以下のようなログが表示されます。

Connecting to XXX.XXX.XXX.XXX
CONNECTED(00000003)
depth=3 C=US, O=SSL Corporation, CN=SSL.com TLS ECC Root CA 2022
verify return:1
... (略) ...

問題があった場合、問題の起きているサーバーにssh等で接続して、以下を調べます。

  • そもそもちゃんと証明書類が配置されているか。
  • Apache, Nginx等の設定は問題無いか。(証明書を示しているパスをlsコマンドで引いてこれるか確認など。)
  • それぞれの証明書の有効期限は問題無いか。(以下のコマンドを実行して調べられます。)
openssl x509 -enddate -noout -in  /[証明書配置しているパス]/XXX.crt
notAfter=Jan 1 23:59:59 2027 GMT

この時、notAfter=以降の日付が現在時刻より前になっていないか確認してください。
(crtだけでなく、caファイルも忘れずに。自分の場合は、サーバー証明書は有効期限が切れていないけど、中間証明書の方の有効期限が過ぎてしまっているという状態でした。)

経緯

仕事で公開しているWebサイトで、「端末によってサイトにアクセス出来たり出来なかったりする。エラーの時はブラウザのURL欄左の鍵マークの所が赤くなっている。」という問い合わせがありました。
証明書の更新忘れていて古くなっている?と慌てて調べたところ自分のPCでは正常にアクセス出来たし、証明書の有効期限も過ぎておらずという状態に。

とはいえブラウザの鍵マークが赤くなっているからには証明書関連のエラーだと思われるので、上記の方法で調査したところ中間証明書だけ有効期限が切れていたということでした。

最新のブラウザ等では中間証明書が無くても問題なくアクセス出来てしまうようで、端末によって差が出る結果になってしまい、気が付くのが遅れてしまいました。

 

証明書関係は今後期日の短縮などもあり、中々手動ではチェックの手が回らないので、opensslコマンド使って自動でチェックを回す等するのが良いかもしれません。

    • BlueSkyで共有する
    • Hatenaで共有する
記事の作成者のW.Aのアイコン

この記事を書いた人

W.A
茨城県在住Webエンジニアです。 PHP、PostgreSQL、Linuxなどを業務で使用しています。 趣味ではGoやNuxt、Flutterをやってます。
  • GitHubのリンク

Comment

関連記事

  • Windows11、Apacheでの自己証明書(オレオレ証明書)のやり方メモのサムネイル画像

    Windows11、Apacheでの自己証明書(オレオレ証明書)のやり方メモ

    掲載

    Windows+Apache環境で、Chromeブラウザで警告が出ない「独自SSL証明書(オレオレ証明書)」を作成・導入する手順を解説します。Service Workerやクリップボードへのコピーなど、HTTPSが必須となるローカル開発環境の構築に役立つ備忘録です。

  • 複数ドメイン管理でindex.htmlを省略リダイレクトするのサムネイル画像

    複数ドメイン管理でindex.htmlを省略リダイレクトする

    掲載

    一つのサーバーで複数のドメインのサイトを管理している場合に、全てのサイトで「index.html」へのアクセスを「index.html」が無いURLにリダイレクトさせたい時、一サイトずつ設定すると手間と維持のコストがかかります。そこで、Apacheの「HTTP_HOST」変数を使ってまとめてリダイレクトする方法の解説をしています。

  • Apache手動インストールしたらcertbot更新が大変だった話のサムネイル画像

    Apache手動インストールしたらcertbot更新が大変だった話

    掲載

    ApacheをAlmaLinux9に手動インストールしたところ、certbotで証明書を更新しようとすると「NoInstallationError」エラーが出ていたため、「httpdのパスを通す」「設定ファイルの場所を明示するもしくはシンボリックリンクを貼る」という対処方法をまとめた備忘録です。

check コピーしました!