2013-09-25 31 views
5

CURLで証明書を指定する必要があります--certオプションで試してみましたが動作していません。CURLでSSL証明書とパスワードを渡す

curlを使用しているときにキーストアとパスフレーズを指定することを教えてください。

答えて

12

は次のようになります。前の回答に

curl --cert certificate_file.pem:password https://www.example.com/some_protected_page 
+3

このオプションでJKSファイルを指定できますか? – Adam

+0

** Java ** KeyStoreでcURLを使用することはできません。ここでは、それを変換する詳細は良いSO答えです:http://stackoverflow.com/q/652916/971423 – Welsh

3

追加あなたのカールのインストールがHTTPSをサポートしていることを確認してください。
curl --versionを使用すると、サポートされているプロトコルに関する情報を取得できます。

あなたのカールがhttpsに対応している場合は、前の回答に従います。

カール--cert certificate_path:パスワードhttps://www.example.com

それは、HTTPSをサポートしていない場合は、HTTPSをサポートしているcURLのバージョンをインストールする必要があります。

0

キーストアからclientcertと秘密鍵を取得しようとしているときに、この問題が発生しました。

上記のリンクは素晴らしいですが、私のredhatディストリビューションには特別なステップがありました。 curlがNSSで構築されている場合(NSSがリストされているかどうかを確認するためにcurl --versionを実行します)、キーをNSSキーストアにインポートする必要があります。私は複雑な手順の束を経て、これはクリーンな方法ではないかもしれないが、それは.P12

keytool -importkeystore -srckeystore $jksfile -destkeystore $p12file \ 
     -srcstoretype JKS -deststoretype PKCS12 \ 
     -srcstorepass $jkspassword -deststorepass $p12password 
     -srcalias $myalias -destalias $myalias \ 
     -srckeypass $keypass -destkeypass $keypass -noprompt 

だからキーをエクスポート作業のものを持って、PEMファイルを生成しますそれが唯一の鍵

echo making ${fileroot}.key.pem 
openssl pkcs12 -in $p12 -out ${fileroot}.key.pem \ 
     -passin pass:$p12password \ 
     -passout pass:$p12password -nocerts 
    を保持していますキー
pks12util -i <mykeys>.p12 -d ~/nss -W <password for cert > 

今すぐカール動作するはずキーストアに

mkdir ~/nss 
chmod 700 ~/nss 
certutil -N -d ~/nss 
  • インポート:
  • は、空のキーストアを作成します。

    curl --insecure --cert <client cert alias>:<password for cert> \ 
        --key ${fileroot}.key.pem <URL> 
    

    私が述べたように、そこにこれを行うには他の方法でもよいが、少なくともこれは私のために、反復したことがあります。 curlがNSSサポートでコンパイルされていた場合、クライアント証明書をファイルから取得することができませんでした。