CURL传递SSL证书和密码

时间:2013-09-25 20:25:03

标签: java unix curl curly-braces

我需要使用CURL指定一个证书,我尝试使用--cert选项它不起作用。

您能否告诉我在使用curl调用时指定密钥库和passpharse?

3 个答案:

答案 0 :(得分:16)

应该是:

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

答案 1 :(得分:3)

除了上一个答案,请确保您的curl安装支持https。
您可以使用curl --version获取有关支持的协议的信息。

如果您的卷曲支持https,请按照上一个答案进行操作。

  

curl --cert certificate_path:密码https://www.example.com

如果它不支持https,则需要安装支持https的cURL版本。

答案 2 :(得分:2)

当我尝试从密钥库中获取clientcert和私钥时,我经历过这个。

威尔士发布的上述链接很棒,但我的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应该可以工作。

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

正如我所提到的,可能有其他方法可以做到这一点,但至少这对我来说是可重复的。如果使用NSS支持编译curl,我无法从文件中提取客户端证书。