86

Windows Vista を実行していて、マルチパート形式でファイルをアップロードするために https 経由で接続しようとしていますが、ローカルの発行者証明書に問題があります。なぜこれが機能しないのかを理解しようとしています。これが解決されたら、後で cURL コードに戻ります。コマンドを実行しています:

openssl s_client -connect connect_to_site.com:443

VeriSign, Inc. からのデジタル証明書が提供されますが、エラーも発生します。

Verify return code: 20 (unable to get local issuer certificate)

ローカル発行者証明書とは何ですか? それは自分のコンピューターからの証明書ですか? これを回避する方法はありますか?-CAfile mozilla.pem ファイルを使用してみましたが、それでも同じエラーが発生します。

4

12 に答える 12

98

同じ問題があり、CA キーが格納されているディレクトリへのパスを渡すことで解決しました。Ubuntuでは次のとおりでした:

openssl s_client -CApath /etc/ssl/certs/ -connect address.com:443
于 2013-01-03T17:22:30.140 に答える
3

Macports の OSX OpenSSL 1.0.1i でも同じ問題が発生し、回避策として CApath を指定する必要がありました (Ubuntu バグ レポートで述べたように、CApath が無効であっても、openssl がデフォルト ディレクトリに表示されます)。興味深いことに、PHP の openssl 関数 (PHPMailer 5 で使用されているもの) を使用して同じサーバーに接続すると、問題なく動作しました。

于 2014-10-07T04:22:00.450 に答える
3

サーバーはクライアント認証用に構成されていますか? その場合、サーバーとの接続中にクライアント証明書を渡す必要があります。

于 2012-10-03T17:04:46.897 に答える
2

クライアント認証の場合:

openssl s_client -cert ./client-cert.pem -key ./client-key.key -CApath /etc/ssl/certs/ -connect foo.example.com:443
于 2015-07-31T01:28:17.337 に答える
2

中間およびルート ca を使用して証明書チェーン ファイルを作成します。

cat intermediate/certs/intermediate.cert.pem certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem

chmod 444 intermediate/certs/ca-chain.cert.pem

次に確認

openssl verify -CAfile intermediate/certs/ca-chain.cert.pem \
  intermediate/certs/www.example.com.cert.pem

www.example.com.cert.pem: OK 証明書をデプロイします

于 2018-10-24T12:26:18.453 に答える