尝试通过https与某些SOAP服务进行通信。服务有证书。如果我将此证书安装到本地存储或在config中将其编码的内容编写为
,一切正常<certificate encodedValue="CCBF......"/>
但我不想在客户端提供硬性参考来为服务证书数据提供服务,因为它将很快到期并将被更改。我想通过CN接受服务证书或者像那样接受服务证书。
根据MSDN client.endpoint.identity.dns 值可以在这种情况下使用。因此,如果服务证书中的dns.value == CN,则连接应该没问题。
但它没有。
当我打开连接时,我得到一个例外:
client.Endpoint.Contract.ProtectionLevel = System.Net.Security.ProtectionLevel.Sign;
client.Open();
其他信息:目标&#39; https://sss.myhost.com&#39;未提供服务证书。在ClientCredentials中指定服务证书。
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<bindings>
<customBinding>
<binding>
<security authenticationMode="MutualCertificate"
enableUnsecuredResponse="true"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<secureConversationBootstrap />
</security>
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport />
</binding>
</customBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior>
<clientCredentials>
<clientCertificate findValue="Foo" storeName="My" storeLocation="CurrentUser" x509FindType="FindByIssuerName"/>
<serviceCertificate>
<!--<defaultCertificate storeLocation="LocalMachine" x509FindType="FindByIssuerName" storeName="Root" findValue="MyIssuerName" />-->
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="https://sss.myhost.com"
binding="customBinding"
contract="RS.InstanceManagerPortType" name="InstanceManagerPort">
<identity>
<!--<certificate encodedValue="CCBF......"/>-->
<dns value="*.myhost.com"/>
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
答案 0 :(得分:0)
我相信您必须实施自己的证书验证。
<behavior name="credentialConfiguration">
<clientCredentials>
<serviceCertificate>
<authentication
certificateValidationMode="Custom"
customCertificateValidatorType="YOUR VALIDATOR"/>
</serviceCertificate>
</clientCredentials>
</behavior>
其中您的VALIDATOR是实现X509CertificateValidator
的类的程序集限定类型名称。在那里,您可以完全自由地验证您想要的任何内容 - CN,指纹等。