为什么我的证书没有在请求中发送?
Why is my certificate not being send in the request?
我正在调用一个网络服务,需要提供一个客户端认证证书。但出于某种原因,我无法弄清楚为什么在服务器请求时不发送证书。
我针对绑定和行为的所有可能设置尝试了来自多个论坛的不同建议。但是无论我在 Wireshark 中检查 "Certificate" 数据包时尝试过什么,证书部分都是空的。
我为服务器 (.cer) 创建了一个证书,为客户端 (.pfx) 创建了一个证书,请参阅 zip file。
在服务器上安装了 .cer 文件并将其标记为有效的身份验证证书。
我已经在我的证书库 (LocalMachine\My) 中安装了 .pfx 证书,密码是 'pvp'。
我的客户端配置是(我已经尝试了几种不同的设置,结果都一样):
<system.serviceModel>
<client>
<endpoint name="IgjEndpoint"
address="https://tekortkomingen-wvggz.webservices-dbb-acc.igj.nl/"
binding="customBinding"
bindingConfiguration="test"
behaviorConfiguration="IgjEndpointBehaviorConfig"
contract="IGJReference.WebserviceTekortkoming">
</endpoint>
</client>
<bindings>
<customBinding>
<binding name="test">
<textMessageEncoding messageVersion="Soap11WSAddressing10" />
<security authenticationMode="CertificateOverTransport" />
<httpsTransport requireClientCertificate="true" realm="" useDefaultWebProxy="false" />
</binding>
</customBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="IgjEndpointBehaviorConfig">
<clientCredentials>
<clientCertificate storeLocation="LocalMachine" findValue="CN=PVP-SelfSigned-ClientCert-Acc" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
当我调用 Web 服务时,我收到一个安全协商异常 "Could not establish secure channel for SSL/TLS with authority",据我所知,这是证书未发送的结果。当我与邮递员通话时,它成功了。
我有 postman 和我的应用程序的 wireshark 输出 here。
查看邮递员输出,您会看到第 1877 行的服务器证书请求包含 "PVP-SelfSigned-ClientCert-Acc" 作为可接受的 CA。在第 2189 行,我的客户端证书被发送到服务器。
但是在从我的应用程序调用它时的 wireshark 输出中,您仍然会看到第 1745 行的服务器证书请求包含 "PVP-SelfSigned-ClientCert-Acc" 作为可接受的 CA。
但是在 1959 行没有发送证书,但是当我在调试时查看请求对象时,我看到证书在我的请求对象中 "client.ClientCredentials.ClientCertificate"
下
过去 5 天,我一直在互联网上搜索我的问题的可能原因和解决方案,但到目前为止,我尝试过的所有建议都没有成功。
我希望有更多专业知识的人可以从 wireshark 输出中得到一些东西并帮助我吗?
此外,在我的 .net 代码中,我只执行以下操作
var client = new WebserviceTekortkomingClient("IgjEndpoint");
var response = client.RequestTekortkomingen(new RequestTekortkomingen());
第二行连接失败。
终于想通了。对方需要信任我们客户端证书中的根 CA
我正在调用一个网络服务,需要提供一个客户端认证证书。但出于某种原因,我无法弄清楚为什么在服务器请求时不发送证书。
我针对绑定和行为的所有可能设置尝试了来自多个论坛的不同建议。但是无论我在 Wireshark 中检查 "Certificate" 数据包时尝试过什么,证书部分都是空的。
我为服务器 (.cer) 创建了一个证书,为客户端 (.pfx) 创建了一个证书,请参阅 zip file。 在服务器上安装了 .cer 文件并将其标记为有效的身份验证证书。
我已经在我的证书库 (LocalMachine\My) 中安装了 .pfx 证书,密码是 'pvp'。
我的客户端配置是(我已经尝试了几种不同的设置,结果都一样):
<system.serviceModel>
<client>
<endpoint name="IgjEndpoint"
address="https://tekortkomingen-wvggz.webservices-dbb-acc.igj.nl/"
binding="customBinding"
bindingConfiguration="test"
behaviorConfiguration="IgjEndpointBehaviorConfig"
contract="IGJReference.WebserviceTekortkoming">
</endpoint>
</client>
<bindings>
<customBinding>
<binding name="test">
<textMessageEncoding messageVersion="Soap11WSAddressing10" />
<security authenticationMode="CertificateOverTransport" />
<httpsTransport requireClientCertificate="true" realm="" useDefaultWebProxy="false" />
</binding>
</customBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="IgjEndpointBehaviorConfig">
<clientCredentials>
<clientCertificate storeLocation="LocalMachine" findValue="CN=PVP-SelfSigned-ClientCert-Acc" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
当我调用 Web 服务时,我收到一个安全协商异常 "Could not establish secure channel for SSL/TLS with authority",据我所知,这是证书未发送的结果。当我与邮递员通话时,它成功了。
我有 postman 和我的应用程序的 wireshark 输出 here。 查看邮递员输出,您会看到第 1877 行的服务器证书请求包含 "PVP-SelfSigned-ClientCert-Acc" 作为可接受的 CA。在第 2189 行,我的客户端证书被发送到服务器。
但是在从我的应用程序调用它时的 wireshark 输出中,您仍然会看到第 1745 行的服务器证书请求包含 "PVP-SelfSigned-ClientCert-Acc" 作为可接受的 CA。 但是在 1959 行没有发送证书,但是当我在调试时查看请求对象时,我看到证书在我的请求对象中 "client.ClientCredentials.ClientCertificate"
下过去 5 天,我一直在互联网上搜索我的问题的可能原因和解决方案,但到目前为止,我尝试过的所有建议都没有成功。 我希望有更多专业知识的人可以从 wireshark 输出中得到一些东西并帮助我吗?
此外,在我的 .net 代码中,我只执行以下操作
var client = new WebserviceTekortkomingClient("IgjEndpoint");
var response = client.RequestTekortkomingen(new RequestTekortkomingen());
第二行连接失败。
终于想通了。对方需要信任我们客户端证书中的根 CA