web-dev-qa-db-ja.com

openssl verify-0の深さのルックアップでエラー20:ローカル発行者証明書を取得できません

pFX証明書からPEM証明書を作成し、それを確認したかった。しかし、私はこの問題に遭遇し、いくつかの答えを見つけようとしましたが、私はしなかったので、それを修正する方法がわかりません。アドバイスをお願いできますか?どうもありがとうございました。

C:\OpenSSL-Win32\bin>set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg

C:\OpenSSL-Win32\bin>openssl
OpenSSL> verify C:\mycert.pem
C:\mycert.pem: C = CZ, ST = Sprava zakladnich registru, L = "Obec=Praha,Ulice=Na Vapence,PSC=13000", O = 72054506, OU = 4333, CN = tstcawilly.szr.local
error 20 at 0 depth lookup:unable to get local issuer certificate
error in verify
OpenSSL>
OpenSSL> verify -CAfile C:\mycert.pem C:\mycert.pem
C:\mycert.pem: C = CZ, ST = Sprava zakladnich registru, L = "Obec=Praha,Ulice=Na Vapence,PSC=13000", O = 72054506, OU = 4333, CN = tstcawilly.szr.local
error 20 at 0 depth lookup:unable to get local issuer certificate
error in verify
OpenSSL>
30
spaghi

OpenSSL> verify -CAfile C:\ mycert.pem C:\ mycert.pem

閉じる。 -CAfile;でCAのルート証明書を追加する必要があります。エンドエンティティ証明書ではありません。何かのようなもの:

openssl verify -CAfile C:\ca-cert.pem C:\mycert.pem

また、中間証明書がある場合は、mycert.pemに追加する必要があります。したがって、mycert.pemには実際には(1つではなく)2つ(またはそれ以上)の証明書があります。

有効なチェーンを構築するために必要なすべての証明書をmycert.pemに追加すると、 "which directory" の問題が解決します。 PKIでよく知られている問題です。基本的に、クライアント(私のような)は、欠落している中間証明書を取得するためにどこに行くべきかを知りません。

20
jww