CURL 通过 SSL 证书和密码

2022-09-02 00:38:07

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

你能告诉我在调用curl时指定密钥库和密码吗?


答案 1

应该是:

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

答案 2

在尝试从密钥库中获取客户端证书和私钥时,我经历了这一点。

上面由威尔士人发布的链接很棒,但是在我的redhat分发上还有一个额外的步骤。如果 curl 是使用 NSS 构建的(运行以查看是否看到列出的 NSS),则需要将密钥导入 NSS 密钥库。我经历了一堆复杂的步骤,所以这可能不是最干净的方式,但它让事情运转起来。curl --version

因此,将密钥导出到 .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 支持编译的,我无法让它从文件中提取客户端证书。


推荐