【发布时间】:2011-12-16 10:32:46
【问题描述】:
我正在使用 WCF 进行一些测试,我们目前有以下服务器设置(简化配置):
<netTcpBinding>
<binding name="netTcp" ... >
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</netTcpBinding>
...
<serviceBehaviors>
<behavior name="defaultServiceBehavior">
<serviceCredentials>
<serviceCertificate
findValue="OurCert"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName"/>
</serviceCredentials>
</behaviour>
</serviceBehaviors>
以及以下客户端配置:
<endpointBehaviors>
<behavior name="NoRevNoValid">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"
revocationMode="NoCheck"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
因此,想法是服务器证书用于加密数据,但客户端不会费心验证证书(客户端无论如何都不会拥有证书的 CA)。
但是,此配置不会阻止客户端验证证书。它仍会尝试遍历信任链并查找撤销列表。
我找到了这个链接stating that the certificateValidationMode attribute does NOT apply to net.tcp bindings。
我已经研究过如何处理 ServicePointManager.ServerCertificateValidationCallback 事件,但似乎这仅适用于基于 Http 的绑定。
大概这些都是因为在使用 net.tcp 绑定时,传输安全处理超出了应用程序的范围?
是否有其他方法可以强制不进行证书验证?
【问题讨论】:
标签: .net wcf .net-3.5 wcf-security