.net WCF net.tcp传输安全性-如何在客户端禁用服务器证书验证

.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

我正在使用WCF进行一些测试,目前我们有以下服务器设置(简化配置):


...
以及以下客户端配置:

<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实际上不再解析。