excel - 安装多个证书时使用 "setClientCertificate"

标签 excel vba ssl certificate winhttp

我在 VBA 中写了一个 WinHttp POST 请求。只要计算机上只安装了一个证书,它就可以正常工作。但是,某些用户拥有多个证书名称相似的证书,因此会返回错误:

a certificate is required to complete client authentication

关于当多个证书共享相似名称时如何选择正确证书的任何建议?我试过同时使用证书的“友好名称”和“CN”名称。

下面是我的代码:

Sub dapull()

Dim URL As String: URL = "https://ce.midwest.org/dart/xml/query"
Dim mfile As String

pulldate = Format(Worksheets("Sheet2").Range("date").Value, "yyyy-mm-dd")
mfile = "<?xml version=" & """" & "1.0" & """" & "?><Envelope xmlns=" & """" & "http://schemas.xmlsoap.org/soap/envelope/" & """" & "><Header/><Body><QueryRequest xmlns=" & """" & "http://markets.midwest.org/dart/xml" & """" & "><QueryResults day=" & """" & pulldate & """" & "><Location>BART</Location></QueryResults></QueryRequest></Body></Envelope>"
Set Req = New WinHttp.WinHttpRequest

With Req
    .Open "POST", URL, False
    .SetClientCertificate "CURRENT_USER\MY\name" '*this is the issue line
    .SetRequestHeader "content-type", "text/xml"
    .Send (mfile)
    .ResponseText
End With

End Sub

最佳答案

我遇到了同样的问题,请问您解决了吗? VBA 只选择第一个 :( 无法列出或识别哪个是哪个(或者至少在获取证书之前按日期或其他方式排序)。 如果你做到了,请告诉我怎么做

现在我“解决”了这个问题,方法是让人们将他们自己的权利证书复制到受信任的人部分,并在我的 XLSM 中放入一个选项来切换商店,以便从 CURRENT_USER\TrustedPeople\而不是我的商店中获取。 它可以工作,但并不优雅,因为它需要每 6 或 12 个月手动重新复制一次证书(但总比根本不工作好:))

关于excel - 安装多个证书时使用 "setClientCertificate",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44510284/

相关文章:

vba - 如何优化(或尽可能避免)Excel VBA 中的循环

excel - Excel 2010 中的 VBA : Scripting. 函数的字典返回值不会作为参数传递给包装函数调用

excel - Axlsx,构建动态列

c++ - 如何将大量数字合并到 C++ 代码中

excel - 我可以使用函数返回两个值吗?

excel - VBA 中的 .Find() 方法出现“类型不匹配”错误

ssl - 如何解决 Jenkins 插件安装问题?

ruby-on-rails - Rails 3.0 SSl for passenger on Ubuntu Natty

ruby-on-rails - 反向代理 SSL 将端口 9000 重定向到 Rails 应用程序和 Portainer 上的 https 协议(protocol)

java - 使用 Apache POI 确定 MS Excel 文件类型