OpenSSL 検証は CA 署名証明書では失敗しますが、自己署名証明書では失敗しませんか?

OpenSSL 検証は CA 署名証明書では失敗しますが、自己署名証明書では失敗しませんか?

まず、関連する質問がたくさんあることは承知していますが、そのほとんどはサーバー上に発行者証明書が不足していることが原因のようです。

私はフォローしていますこのガイドSSL によるクライアント認証を有効にしたいのですが、Apache にクライアント証明書を受け入れさせることができません。詳しく調べてみると、Apache のログにCertificate Verification: Error (20): unable to get local issuer certificateメッセージがいっぱい記録されています。

私は CA から提供された証明書と私の秘密鍵を CA として使用しています。

問題をさらに診断するために実行したところ、openssl verify -CAfile ca.cert client_signed.crt同じエラーが発生しました。

すべての手順をやり直すことにしました。しかし、コマンドラインからすべてを実行しても同じエラーが返されます。

$ openssl x509 -req -days 360 -in client.csr -CA ca.cert -CAkey ca.key -CAcreateserial -out client_signed.crt
Signature ok
subject= ...
Getting CA Private Key
Enter pass phrase for server.key:
[I type in the password and press ENTER]
$ openssl verify -CAfile ca.cert client_signed.crt
[ .. ]
error 20 at 0 depth lookup:unable to get local issuer certificate
$ ls ca.cert
ca.cert

問題を完全に診断するために、クライアント証明書に署名するためにCAとして使用する証明書を生成して自己署名することにしました。驚いたことに、これは完璧に機能しましたこれは実際に私がリンクしたチュートリアルの最初のステップです。

どうやら、問題は私の証明書に関連しているようです。自分の証明書に署名したCAの証明書を持っていないので、信頼の連鎖に関連する何かがあるのではないかと疑っています。証明書をダウンロードしようとしました。ウェブサイトからしかし、自分の証明書を検証することすらできません。

$ ls /path/to/downloaded/files/
acrn.cer  ancca.crt  CorreoUruguayoCA.crt  CorreoUruguayoRootCA.crt
$ openssl verify -CApath /path/to/downloaded/files/ my.cert
error 20 at 0 depth lookup:unable to get local issuer certificate

どのような助けでも大歓迎です。

編集: Ubuntu で「ファイルの表示」ユーティリティを使用すると、証明書が であることが示されますVerified by: Correo Uruguayo - CA。openssl がそれを検証できない理由はわかりません。

関連情報