2016-12-15 87 views
0

私はプライベートキーによる認証が必要なサーバーに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証明書がロードされる前のブラウザーと同じ問題に走っていると思います。どのようにそれを使用する考えですか?

ありがとうございます。

+0

[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

+0

はすでにそれらを見ましたが、それらの作品はどれも – Ivan

+0

回答ブロックに入れてください。期間が過ぎると、あなた自身の答えを受け入れることができます。 Answerブロックを使用することは、スタックオーバーフローの仕組みに過ぎず、将来の訪問者が回答を評価しやすくなります。また、[回答の受け取りはどうしますか?](http://meta.stackexchange.com/q/5234/173448)を参照してください。 – jww

答えて

0

straceのおかげで2つの問題が組み合わされ、修正されました。

1)私はRSA秘密鍵を他の投稿で述べたように提供しなければなりません。 2)パスフレーズ付きのローカル秘密鍵ファイルを使用する場合、./key:passとして供給できますが、--pass {phrase }オプション

関連する問題