ネットワーク基礎4 択難易度 応用

状況

Web サーバーの証明書を新しいものに差し替えた。各ブラウザでは警告なく開けるが、連携先のサーバーの curl は「unable to get local issuer certificate」、Java アプリは証明書の検証エラーで失敗する。期限は 1 年先まである。

最も疑わしい原因は?

正答

  1. 証明書の有効期限が切れている
  2. 証明書が自己署名である
  3. ファイアウォールで 443 番が閉じている
  4. サーバーが中間証明書を送っていない

解説

サーバー証明書は、中間 CA が署名し、その中間 CA をルート CA が保証する、という鎖でつながっている。サーバーはサーバー証明書と一緒に中間証明書も送る必要があり、差し替え時にサーバー証明書だけを設定すると鎖が途切れる。ブラウザは、証明書に書かれた発行元の URL(AIA)から中間証明書をその場で取りに行ったり、過去に見た・事前に配られた中間証明書を使ったりして補えるので開けてしまうが、curl や Java は既定では補わないので「発行元が見つからない」で失敗する。openssl s_client -showcerts で送られてくる証明書の枚数を見ると確かめられる。期限切れや自己署名ならブラウザも警告を出し、443 番が閉じていれば TLS のエラーまで進まない。

参考: wiki.mozilla.org

tlscertificateintermediate-certificate

この問題を含む ネットワーク基礎 のテストを制限時間つきで解く

ネットワーク基礎クイズへ