我正在尝试使用 CURL 测试与需要客户端证书的服务器的简单 HTTPS 连接。我已在.curlrc
文件中指定了证书类型cert = /path/to/Cert.p12
,并告诉它是 PKCS12 证书cert-type = P12
。它一直失败,并显示“无法解析 PKCS12 文件,请检查密码......mac 验证失败”,因此出于好奇,我尝试在配置文件中对密码进行硬编码,果然它立即将页面拉了出来。
我读手册页大约十几次,我没看到命令行上有任何内容说“请提示我输入密码”,它就在那里说“如果未指定可选密码,将在终端上查询”。我是否遗漏了一些显而易见的东西?
答案1
我找不到来源,但似乎虽然 CURL有点说的是 PKCS12,它实际上更愿意使用 PEM 格式的证书。只需将我的 PKCS12 证书转换为 PEM 并输入密码,CURL 就会按预期开始提示输入密码。
答案2
我可以使用 P12,并使用环境变量作为密码,该密码是我提前通过安全提示获得的。代码:
read -sp "Certificate Password: " CERTPASS
curl --cert-type P12 --cert myp12file.p12:"$CERTPASS" https://example.com
另外,我可以使用以下命令格式提示输入证书密码:
curl -uadmin -v -X POST https://example.com