私は他のスタックの回答(これに関連する多数の回答があります)の指示に従って、openssl verify
次のようにLet's Encrypt証明書を確認するコマンドを作成しました。
openssl verify -show_chain /etc/letsencrypt/live/mail.example.com/chain.pem /etc/letsencrypt/live/mail.example.com/cert.pem
しかし、エラーのため失敗します。
CN = mail.example.com
error 20 at 0 depth lookup: unable to get local issuer certificate
error /etc/letsencrypt/live/mail.example.com/cert.pem: verification failed
/etc/letsencrypt/live/mail.example.com/chain.pem: OK
Chain:
depth=0: C = US, O = Let's Encrypt, CN = R3 (untrusted)
depth=1: C = US, O = Internet Security Research Group, CN = ISRG Root X1
交換してfullchain.pem
もchain.pem
失敗します。しかし、これらはすべてLet's Encryptが私に配布した証明書です!
私がここで何を見逃しているのでしょうか?
ベストアンサー1
openssl verify -show_chain /etc/letsencrypt/live/mail.example.com/chain.pem /etc/letsencrypt/live/mail.example.com/cert.pem
このコマンドは無効です。指定されたすべての証明書を互いに独立して確認しようとします。つまり、信頼チェーンを構築せずに最初の証明書を確認します。代わりに、コマンドは次のようにする必要があります。
openssl verify -untrusted chain.pem cert.pem
-untrusted
中間証明書を発行します。ルート証明書 ISRG X1 は、最新システムのトラストストアから取得されます。それ以外の場合は、それを使用または-trusted
提供する必要があります-CAfile
。