2013-05-18 78 views
18

私はcurlを使用して、公開証明書ファイルを使用してhttpsサイトからデータをダウンロードしています。プライベートキーファイルを設定できません: './cert.pem' type PEM

システム情報:

  • はOS:のFedora 14
  • をカール:カール7.30.0
  • のOpenSSL:のOpenSSL 1.0.0a-FIPS

コマンドは、

です。
curl -v "https://<ip:<port>" --cert "./cert.pem" --cacert "./cacert.pem" --cert-type PEM 
* About to connect() to kng.com port 443 (#0) 
* Trying 11.19.37.123... 
* Adding handle: conn: 0x8189e68 
* Adding handle: send: 0 
* Adding handle: recv: 0 
* Curl_addHandleToPipeline: length: 1 
* - Conn 0 (0x8189e68) send_pipe: 1, recv_pipe: 0 
* Connected to fkng.com (11.19.37.123) port 443 (#0) 
* unable to set private key file: './cert.pem' type PEM 
* Closing connection 0 
curl: (58) unable to set private key file: './cert.pem' type PEM 

私は.pemファイルにすべての許可を与えましたが、まだカールはエラーを投げています。

おかげ

答えて

13

証明書の秘密鍵が同じファイルに存在しないように使用したオプションにcURLのdocumentationを読んだ後、それが見えます。別のファイルにある場合は、 - keyファイルを使用してパスフレーズを指定する必要があります。

したがって、cert.pemに秘密鍵(証明書とともに)があるか、--keyオプションを使用して証明書を供給してください。

また、この文書では、 が記載されています。このオプションでは、プライベートキーである「証明書」ファイルと、プライベート証明書が連結されていることを前提としています。

どのように連結されていますか?それは非常に簡単です。それらを同じファイルに次々に入れてください。

この詳細については、hereをご覧ください。

私はこれがあなたを助けるかもしれないと信じています。

+0

感謝私が理解していないことの1つは、公開鍵証明書から秘密鍵を取得する方法です。私はこのコマンドを使って公開鍵 "openssl x509 user1495372

+0

公開鍵証明書に秘密鍵が含まれていません。秘密鍵は所有者が安全に保持すること。秘密鍵を持っていない場合、あなたは証明書の所有者ではありません。 – doptimusprime

+0

そのコマンドは公開鍵のみを与えます。 – doptimusprime

0

私はこのエラーが出ていますが(私はコマンドラインの代わりにphpを使って作成していましたが)誰かを助けてくれるなら、それを修正するために古い.keyファイルや.pemファイル私が見ていたディレクトリにいました。それらを削除し、認証で新鮮なファイルを作ることによって、それは完全に働いた!

2

私はオープンSSLを使用していたとき、私はこの問題に直面し、解決策は、3つのファイルに証明書を分割し、カールとの通話をやってそれらのすべてを使用することでした:あなたの貴重なinformation..Stillため

openssl pkcs12 -in mycert.p12 -out ca.pem -cacerts -nokeys 
openssl pkcs12 -in mycert.p12 -out client.pem -clcerts -nokeys 
openssl pkcs12 -in mycert.p12 -out key.pem -nocerts 

curl --insecure --key key.pem --cacert ca.pem --cert client.pem:KeyChoosenByMeWhenIrunOpenSSL https://thesite 
+0

hmm。あなたのパスワードをclient.pemに設定していることを確認してください。 – Philip

関連する問題