2013-09-25 167 views
5

我需要使用CURL指定一個證書,我嘗試使用--cert選項,它不起作用。CURL通過SSL證書和密碼

請讓我知道指定keystore和passpharse時調用curl?

回答

12

應該是:

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

我可以用這個選項指定一個JKS文件嗎? – Adam

+0

您不能將cURL與** Java ** KeyStore一起使用。這是一個很好的答案,轉換它的詳細信息:http://stackoverflow.com/q/652916/971423 – Welsh

3

加入到前面的答案確保您的捲曲的安裝支持HTTPS。
您可以使用curl --version獲取有關支持的協議的信息。

如果您的curl支持https,請按照上一個答案。

捲曲--cert certificate_path:密碼https://www.example.com

如果它不支持HTTPS,您需要安裝支持HTTPS捲曲版本。

0

我試圖從密鑰庫中獲取clientcert和私鑰時經歷了這個過程。

以上由welsh發佈的鏈接非常棒,但是我的redhat發行版還有一個額外的步驟。如果使用NSS構建curl(運行curl --version以查看是否列出了NSS),那麼您需要將密鑰導入到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 
  • 創建一個空的密鑰庫:
mkdir ~/nss 
chmod 700 ~/nss 
certutil -N -d ~/nss 
  • 導入密鑰到密鑰庫
pks12util -i <mykeys>.p12 -d ~/nss -W <password for cert > 

現在捲曲應該工作。

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

正如我所提到的,可能還有其他方法可以做到這一點,但至少這是重複的我。如果curl是在NSS支持下編譯的,我無法讓它從文件中提取客戶端證書。