Ada*_*dam 11 java unix curl curly-braces
我需要使用CURL指定一个证书,我尝试使用--cert选项它不起作用.
你能告诉我在用curl调用时指定keystore和passpharse吗?
Wel*_*lsh 20
应该:
curl --cert certificate_file.pem:password https://www.example.com/some_protected_page
小智 8
我在尝试从密钥库中获取客户端证书和私钥时经历了这个过程。
上面由 welsh 发布的链接很棒,但在我的 redhat 发行版上还有一个额外的步骤。如果 curl 是使用 NSS 构建的(运行curl --version以查看是否列出了 NSS),那么您需要将密钥导入 NSS 密钥库。我经历了一堆错综复杂的步骤,所以这可能不是最干净的方法,但它使事情正常进行
所以将密钥导出到 .p12
Run Code Online (Sandbox Code Playgroud)keytool -importkeystore -srckeystore $jksfile -destkeystore $p12file \ -srcstoretype JKS -deststoretype PKCS12 \ -srcstorepass $jkspassword -deststorepass $p12password -srcalias $myalias -destalias $myalias \ -srckeypass $keypass -destkeypass $keypass -noprompt
并生成只保存密钥的pem文件
Run Code Online (Sandbox Code Playgroud)echo making ${fileroot}.key.pem openssl pkcs12 -in $p12 -out ${fileroot}.key.pem \ -passin pass:$p12password \ -passout pass:$p12password -nocerts
Run Code Online (Sandbox Code Playgroud)mkdir ~/nss chmod 700 ~/nss certutil -N -d ~/nss
Run Code Online (Sandbox Code Playgroud)pks12util -i <mykeys>.p12 -d ~/nss -W <password for cert >
现在 curl 应该可以工作了。
Run Code Online (Sandbox Code Playgroud)curl --insecure --cert <client cert alias>:<password for cert> \ --key ${fileroot}.key.pem <URL>
正如我所提到的,可能还有其他方法可以做到这一点,但至少这对我来说是可以重复的。如果 curl 是使用 NSS 支持编译的,我无法让它从文件中提取客户端证书。
小智 5
除了先前的答案,请确保您的 curl 安装支持 https。
您可以使用curl --version获取有关支持的协议的信息。
如果您的 curl 支持 https,请遵循上一个答案。
curl --cert certificate_path:password https://www.example.com
如果不支持https,则需要安装支持https的cURL版本。