私はプライベートキーによる認証が必要なサーバーにPHPアプリケーションを接続しようとしていますが、パブリックサーバーでは証明書がありません。curl "ピアの公開鍵が無効です。"クライアント鍵を読み込むことができません:-8178(SEC_ERROR_BAD_KEY)
APIの場所:https://b2b.postaonline.cz/
ブラウザからAPIをアクセスもするために、私はこれらの本命インストールされている:http://www.postsignum.cz/certifikaty_autorit.html(PEM)
を、私はPostSignumから取得し、私の.pfx証明書、と接続することができました。
ただし、curlを使用してLinuxサーバーから接続できません。私は、RSAなどにプライベートに変換するなど、数時間を検索し、テストしました。 、私は接続するためにカールを使用した後
openssl pkcs12 -in certificate.pfx -out ca.pem -cacerts -nokeys
openssl pkcs12 -in certificate.pfx -out client.pem -clcerts -nokeys
openssl pkcs12 -in certificate.pfx -out key.pem -nocerts
は:
だから、現在の状況は、私が使用し.PFXを受け、このようなものを抽出していること、である
$ curl -v --key ./key.pem --cacert ./ca.pem --cert ./client.pem https://b2b.postaonline.cz/
* Trying 193.150.24.113...
* Connected to b2b.postaonline.cz (193.150.24.113) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: ./ca.pem
CApath: none
* unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
* NSS error -8178 (SEC_ERROR_BAD_KEY)
* Peer's public key is invalid.
* Closing connection 0
curl: (58) unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
これは何かであるIすべてのバリエーションを手に入れています。
注:私のcertificate.pfxをブラウザに読み込んだとき、接続はまだ安全ではありませんでした。そこでPostSignumの証明書サイトから次のものをダウンロードしてブラウザにロードしました。
Postsignum Root QCA 2
Postsignum Public CA 2
すぐにブラウザから接続できました。
私はこれが何かだと思いますが、私はカールの中でも行う必要がありますが、私はどう考えていません。 cert.pfxからちょうど抽出されたca.pemとclient.pemで、カールは追加のAuthoritiy証明書がロードされる前のブラウザーと同じ問題に走っていると思います。どのようにそれを使用する考えですか?
ありがとうございます。
[NSSで動作しないOpenSSLで生成されたSSL証明書](http://stackoverflow.com/q/22499425)、[curl + nssに関する問題](https://curl.haxx.se/ mail/archive-2010-07/0009.html)、cURLメーリングリスト、[NSS and SSL Error Codes](http://www-archive.mozilla.org/projects/security/pki/nss/ref/ssl/ sslerr.html)Mozillaのサイトなど – jww
はすでにそれらを見ましたが、それらの作品はどれも – Ivan
回答ブロックに入れてください。期間が過ぎると、あなた自身の答えを受け入れることができます。 Answerブロックを使用することは、スタックオーバーフローの仕組みに過ぎず、将来の訪問者が回答を評価しやすくなります。また、[回答の受け取りはどうしますか?](http://meta.stackexchange.com/q/5234/173448)を参照してください。 – jww