使用 C#,可以在 Web 请求中提供已安装的客户端证书。如果指纹主题等属性已知,则可以在请求中选择和使用它。不需要证书文件的已知文件路径。 这里是一个例子。
我想对 Windows curl 做同样的事情。
例如,像这样的伪代码。
curl GET https://www.somekindOfaRESTAPI.com -ThumbPrintOfClientCertificate XXXXXX
这样的事情可能吗?如果我需要 C# 使用客户端证书执行简单的 GET 调用,那将是非常令人惊讶的。 Windows curl 也应该能让我这样做。但是如何呢?
首先必须设置强制 SCHANNEL SSL 后端的环境变量。
set CURL_SSL_BACKEND=schannel
然后可以像这样将证书指纹传递给 curl:
--cert "CurrentUser\\TrustedPeople\\12345abcdefghijk"
与 libcurl 相同的是在代码顶部添加以下内容:
curl_global_sslset(CURLSSLBACKEND_SCHANNEL, NULL, NULL);
然后加载证书:
curl_easy_setopt(curl, CURLOPT_SSLCERT, "CurrentUser\\TrustedPeople\\12345abcdefghijk");