.net WCF net.tcp传输安全性-如何在客户端禁用服务器证书验证
我正在使用WCF进行一些测试,目前我们有以下服务器设置(简化配置):.net WCF net.tcp传输安全性-如何在客户端禁用服务器证书验证,.net,wcf,.net-3.5,wcf-security,.net,Wcf,.net 3.5,Wcf Security,我正在使用WCF进行一些测试,目前我们有以下服务器设置(简化配置): ... 以及以下客户端配置: <endpointBehaviors> <behavior name="NoRevNoValid"> <clientCredentials> <serviceCertificate> <authentication certificateValidationMo
...
以及以下客户端配置:
<endpointBehaviors>
<behavior name="NoRevNoValid">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"
revocationMode="NoCheck"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
我已经研究了如何处理ServicePointManager.ServerCertificateValidationCallback事件,但似乎这只适用于基于Http的绑定
可能这两者都是因为在使用net.tcp绑定时,传输安全性的处理超出了应用程序的范围
有没有其他方法可以强制不进行证书验证?经过多次测试,表明certificateValidationMode属性不适用于net.tcp绑定的链接似乎是错误的
此选项仍适用于net.tcp绑定
但是,用于net.tcp传输安全的证书仍在加载,其CA和CRL仍在尝试解析。我使用的证书包含CRL和CAs的URL,因此每次证书存储都会关闭以解析这些URL(URL不可用),即使WCF配置当时说忽略证书是否无效
所以答案是WCF配置certificateValidationMode仍然适用,只是证书仍将由证书存储“解析”。这对大多数人来说应该不是一个大问题,但我将对证书的URL做一些进一步的测试,因为这些URL在连接过程中会导致严重的延迟问题。在我的例子中,使用CertificateValidator=X509CertificateValidator。没有任何帮助:
非工作代码:
var handler = new Saml2SecurityTokenHandler();
var configuration = new SecurityTokenHandlerConfiguration
{
RevocationMode = X509RevocationMode.NoCheck,
CertificateValidationMode = X509CertificateValidationMode.None
};
handler.ValidateToken(saml2Token) gives a exception:
var handler = new Saml2SecurityTokenHandler{CertificateValidator = X509CertificateValidator.None};
var configuration = new SecurityTokenHandlerConfiguration();
X.509证书CN=CN.name.com链生成失败。使用的证书具有无法验证的信任链。更换证书或更改certificateValidationMode。已处理证书链,但在不受信任的根证书中终止
工作代码:
var handler = new Saml2SecurityTokenHandler();
var configuration = new SecurityTokenHandlerConfiguration
{
RevocationMode = X509RevocationMode.NoCheck,
CertificateValidationMode = X509CertificateValidationMode.None
};
handler.ValidateToken(saml2Token) gives a exception:
var handler = new Saml2SecurityTokenHandler{CertificateValidator = X509CertificateValidator.None};
var configuration = new SecurityTokenHandlerConfiguration();
您使用的是自签名证书吗?它实际上是从域控制器证书颁发机构创建的测试证书,因此CRL和CA条目具有指向该控制器的URL,但URL实际上不再解析。