我有一个应用程序,使用双向认证公开URL。现在我正在编写一个使用Popen运行curl命令连接到该应用程序并获取所需数据的Python脚本。但是当我运行Python脚本时,会出现以下错误。
curl: (58) 无法加载PEM客户端证书,OpenSSL错误:error:02001002:系统库:fopen:没有那个文件或目录(未找到密钥,密码错误或文件格式不正确?)
我正在Windows 7机器上运行该应用程序,已安装了curl和openssl。运行的命令如下:
curl -v https://localhost:9400/<URL> -H "Connection:close" --cacert 'C:/local_cert/root.crt' --cert 'C:/local_cert/client.crt' --key 'C:/local_cert/client.key' --pass client_key_passwd
现在进行测试时,我在Git Bash for Windows中运行了相同的命令,并成功地得到了结果。但是当我在Git Cmd for Windows或Windows Cmd中运行相同的命令时,我得到了上面提到的错误。
我已检查证书路径是否正确,它们采用PEM格式,我已经安装了openssl和curl。由于某些原因,我不能使用Python包Requests或urllib3,只能使用curl。上述情况使我相信,在Windows Cmd和Git Cmd for Windows中缺少一些设置,但我不确定可能是什么。
C:\local_cert\root.crt
而不是C:/local_cert/root.crt
。 - James Z