首页 > 解决方案 > 异常 - System.ServiceModel.Security.SecurityNegotiationException:“无法为 SSL/TLS 安全通道建立信任关系

问题描述

我在 VisualStudio 中制作肥皂客户端。我尝试使用 X509Certificate 发送任何请求。我收到错误:

System.ArgumentException: „提供的 URI 方案“http”无效;预期的“https”。参数名称:via”</p>

我的自定义绑定代码如下所示:

<customBinding>
        <binding name="myCustomBindingConfig">
                <security authenticationMode="CertificateOverTransport"
                          defaultAlgorithmSuite="Basic256"
                          requireDerivedKeys="true"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
                    </security>
                    <textMessageEncoding messageVersion="Soap11"></textMessageEncoding>
                    <httpsTransport maxReceivedMessageSize="2000000000" />
                </binding>
            </customBinding>

于是我把http改成了https,但是又出现了一个错误:

System.ServiceModel.Security.SecurityNegotiationException:“无法为具有权限 'services.pl' 的 SSL/TLS 安全通道建立信任关系。”</p>

这是测试环境,服务使用自签名证书。

我已经尝试添加:

     ServicePointManager.Expect100Continue = true;
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
     ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);

在我的代码的顶部,正如这里提到的那样,但没有发生任何事情(我仍然有错误)。我现在能做什么?

标签: c#sslx509certificatewcf-bindingwcf-security

解决方案


请检查以下几点来解决问题:

  1. 您是否使用了证书中的正确名称?

  2. 您是否有服务器的 DNS 和视线?

  3. 新服务器机器的时钟设置正确吗?

  4. 如果你从服务器浏览到soap服务,你能得到SSL吗?

  5. 证书是否安装在正确的位置,证书信任链问题是否有问题。

  6. 服务器的机器级代理设置正确吗?


推荐阅读