这是服务方面的配置:
<endpoint binding="netTcpBinding" bindingConfiguration="TcpBinding" contract="a"></endpoint>
<binding name="TcpBinding">
<security mode="Transport">
<transport protectionLevel="EncryptAndSign" clientCredentialType="None">
</transport>
</security>
<reliableSession enabled="false"/>
</binding>
<serviceBehaviors>
<behavior>
<serviceCredentials>
<serviceCertificate storeName="My" storeLocation="LocalMachine" findValue="73 b9 d8 98 8d b6 54 bf fb ff 21 0b ac fc 04 19 37 16 71 5f" x509FindType="FindByThumbprint" />
</serviceCredentials>
<serviceMetadata httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
我在此链接后创建了自签名证书: https://msdn.microsoft.com/en-us/library/ff648498.aspx
首先,我创建了一个证书,我在受信任的根证书颁发机构中作为根证书颁发机构安装 - 名为“RootCA”。然后,我创建了另一个用这个'RootCA'签名的自签名证书,该证书发给了'localhost'。
在客户端,我使用与服务端相同的配置元素。在打开代理时,我收到以下异常:
System.ServiceModel.Security.SecurityNegotiationException X.509 证书CN = localhost链构建失败。证书即 使用的信任链无法验证。更换 证书或更改certificateValidationMode。撤销 函数无法检查证书的撤销。
还有什么需要让它运行?
答案 0 :(得分:1)
include this in your client side in endpoint behaviours
<endpointBehaviors>
<behavior name="clientBehave">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>