curl で apache上のhttpsアクセスすると、SSL エラー

curl にて、

なぜかエラーが出てコンテンツが取得できないと嘆いてる人がいたので どれどれと覗き込むと

CN=R3,O=Let's Encrypt,C=US
* NSS error -8179 (SEC_ERROR_UNKNOWN_ISSUER)
* Peer's Certificate issuer is not recognized.
* Closing connection 0

とか。

* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0

証明書が不正だと言われる場合がある。

大抵の場合

サーバ側中間証明書が抜けている

SSLCertificateChainFile この指定が無い事が多いので注意。 管理が別だった場合さらに最悪 ブラウザにLet’s Encryptの証明書がフルで入ってるから、気がつかない場合が多い。

nginxの場合はそもそも中間証明書の指定ができないので certbotが結合している。 コレに慣れているとapacheでズッコケます。

事を聞くと、なんでもこの開発サーバは元々nginxで立ち上がったらしいのですが、 お客さんがロシアは嫌だという事で() apacheに変更した経緯があるそうで、その後certbotがrenewしてapacheなんだよなって事になって 今回の事件になった模様。

客の言う事はほどほどにね

ななし: