我在用Windows..。
当我通过gitbash运行以下curl命令时,它运行得很好:
curl --cacert ca.crt --key client.key --cert client.crt "https://myurl"
但是,如果我试图在命令提示符或Powershell中运行相同的命令,则会得到以下错误:
curl: (58) schannel: Failed to import cert file client.crt, last error is 0x80092002
要使命令在命令提示符或Powershell中工作,我需要做什么?
发布于 2022-03-03 12:01:30
Windows版本的curl.exe没有配置为可以使用openssl,但是git的版本是。
因此,为了确保每当我在命令提示符中输入“curl”,它使用了Git版本的curl,我在系统环境变量中添加了到Git的curl (C:\Program \Git\mingw64 64\bin)的路径,并将其移到顶部的…中。所以它在找到窗口卷曲之前就找到了盖特卷曲。
然后重新启动命令提示符,它解决了这个问题。
发布于 2022-03-02 17:27:42
您以错误的格式提供客户端证书。curl
需要PEM格式的证书(来源):
-E/-cert (SSL)告诉curl在使用HTTPS或FTPS获取文件时使用指定的证书文件。证书必须采用PEM格式。如果未指定可选密码,则将在终端上查询该密码。请注意,此选项假定一个“证书”文件,即私钥和私有证书连接在一起!请参见--证书和--键,以独立指定它们。如果curl是针对NSS库构建的,那么这个选项可以告诉curl,在由环境变量SSL_DIR (或默认情况下/etc/pki/nssdb)定义的NSS数据库中使用证书的昵称。如果NSS PKCS#11模块(libnsspem.so)可用,则可以加载PEM文件。如果要使用当前目录中的文件,请在其前面加上"./“前缀,以避免与昵称混淆。如果多次使用此选项,则将使用最后一个选项。
您的证书可能是DER格式的,也可能包含完整的证书链,而不是单个客户端证书。
发布于 2022-07-27 10:43:31
在curl的手册中,描述了在Windows上,默认情况下它使用schannel提供程序(它本身使用windows存储)。我现在正在执行同样的任务:-)试图找到一种从命令行和本地文件传递证书的方法。
也许尝试将证书导入到Windows存储中。
https://stackoverflow.com/questions/71325829
复制相似问题