我想連接我的PHP應用程序到服務器,這需要通過私鑰授權並且沒有公共服務器上的證書。curl「對方的公鑰無效」。無法加載客戶端密鑰:-8178(SEC_ERROR_BAD_KEY)
API的位置:https://b2b.postaonline.cz/
進入電影從瀏覽器的API,我已經安裝了這些證書:http://www.postsignum.cz/certifikaty_autorit.html(PEM)
然後我能夠用我的.pfx證書,從PostSignum檢索連接。
但是,我無法使用curl從Linux服務器進行連接。 OFc,我已經搜索並測試了幾個小時的東西 - 比如私有化到RSA等等。
所以目前的狀況是,我已經使用收到.pfx或提取這樣的東西:
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
後,我用捲曲連接:
$ 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)
這是我正在與所有的變化。
注意:當我將我的certificate.pfx加載到瀏覽器時,連接仍然不安全。所以,我從網上下載PostSignum證書的網站下面並加載它們到瀏覽器
Postsignum Root QCA 2
Postsignum Public CA 2
剛過,我能夠從瀏覽器連接。
我覺得這是一件事,我也需要在捲曲中做,但我不知道如何。用ca.pem和client.pem,這些都是從certificate.pfx中提取出來的 - 我認爲curl在加載額外的Authoritiy證書之前就遇到了同樣的麻煩。任何想法如何使用?
謝謝。
另請參見[使用OpenSSL生成的SSL證書在NSS上不起作用](http://stackoverflow.com/q/22499425),[捲曲+ nss問題](https://curl.haxx.se/ mail/archive-2010-07/0009.html),[NSS和SSL錯誤代碼](http://www-archive.mozilla.org/projects/security/pki/nss/ref/ssl/) sslerr.html)在Mozilla的網站上等 – jww
已經看到他們,這些都不適合我 – Ivan
請將答案放在答案塊。經過一段時間後,您將能夠接受您自己的答案。使用Answer模塊就是Stack Overflow的工作方式,它可以讓未來的訪問者輕鬆地評估答案。另請參閱[如何接受答案?](http://meta.stackexchange.com/q/5234/173448) – jww