Java CURL传递SSL证书和密码

Java CURL传递SSL证书和密码,java,unix,curl,curly-braces,Java,Unix,Curl,Curly Braces,我需要使用CURL指定一个证书,我尝试使用--cert选项,但它不起作用 使用curl调用时,请让我知道如何指定密钥库和密码库?应该是: curl --cert certificate_file.pem:password https://www.example.com/some_protected_page 除了前面的答案之外,请确保curl安装支持https。 您可以使用curl--version获取有关受支持协议的信息。 如果您的curl支持https,请遵循前面的答案 curl--证

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

使用curl调用时,请让我知道如何指定密钥库和密码库?

应该是:

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

除了前面的答案之外,请确保curl安装支持https。
您可以使用
curl--version
获取有关受支持协议的信息。

如果您的curl支持https,请遵循前面的答案

curl--证书路径:密码


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

我在尝试从密钥库中获取clientcert和私钥时遇到过这个问题

上面由威尔士人发布的链接很棒,但在我的红帽发行版上又多了一步。如果curl是用NSS构建的(运行
curl--version
查看是否列出了NSS),那么需要将密钥导入到NSS密钥库中。我经历了一系列复杂的步骤,所以这可能不是最干净的方法,但它让事情运转起来

因此,将密钥导出到.p12

并生成仅保存密钥的pem文件

  • 创建一个空密钥库:
  • 将密钥导入密钥库
pks12util-i.p12-d~/nss-W
现在卷曲应该起作用了

curl--不安全--证书:\
--key${fileroot}.key.pem

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

我可以使用此选项指定JKS文件吗?不能将curl与Java密钥库一起使用。下面是一个很好的答案,详细说明如何转换它:pks12util命令不存在,应该是pk12util。我还必须通过以下方式设置nss位置:
export SSL\u DIR=~/nss
keytool -importkeystore -srckeystore $jksfile -destkeystore $p12file \
        -srcstoretype JKS -deststoretype PKCS12 \
        -srcstorepass $jkspassword -deststorepass $p12password  
        -srcalias $myalias -destalias $myalias \
        -srckeypass $keypass -destkeypass $keypass -noprompt
 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>