如何建立WCF SSL/TLS安全通道的信任关系

问题描述 投票:0回答:1

我们有客户端服务器应用程序,它使用 WCF 进行通信。如何使用 app.config 将证书正确关联到 WCF 服务。现在我在服务器上的 app.config 中定义证书,如下所示;

   <behaviors>
<serviceBehaviors>
<behavior>
<serviceCredentials>
<serviceCertificate findValue="5b92cf508b894aec82074514954185ecd78b654a" storeLocation="LocalMachine" storeName="Root" x509FindType="FindByThumbprint" />
</serviceCredentials>
</behavior>
</behaviors>

在客户端,我以编程方式分配证书,如下,

   X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadOnly);
            X509Certificate2Collection certificates = store.Certificates.Find(
                X509FindType.FindByThumbprint, "5b92cf508b894aec82074514954185ecd78b654a", true); //I am seeing the certificate correctly. Please see the screenshot below.

            InstanceContext context = new InstanceContext(callback);
            this.SystemService = new SystemServiceClient(context, tcpBinding, tcpAddress);
            this.SystemService.ClientCredentials.ClientCertificate.Certificate = certificates[0];

调试时在客户端正确显示证书如下,

When debugging correctly shows certificate

尝试使用线路

string[] lstIFs = this.ServerConnection.NetworkService.GetNetworkInterfaces();
与 WCF 服务建立连接时,我们收到如下错误:“System.ServiceModel.Security.SecurityNegotiationException 无法为具有权限的 SSL/TLS 安全通道建立信任关系”。请帮忙。

System.Security negotiation exception

c# wcf ssl-certificate basichttpbinding service-model
1个回答
0
投票

既然可以在客户端正确显示证书,我想可能是客户端认为这个证书不安全,不信任这个密钥。

以下是您可以采取的一些建议:

1.使用 makecert 创建根 CA 并从中创建证书

2.使用 Windows 证书服务器或其他信任该根证书的 PKI 解决方案

3.从CA购买SSL证书。

© www.soinside.com 2019 - 2024. All rights reserved.