我们正在升级我们的产品以使用TLS 1.2版本。为此,我们将所有项目从.net 4.6.2升级到了.net 4.7.2版本并进行了构建。
打开频道时,我看到了一个与WCF服务有关的问题
(proxy as ICommunicationObject).Open();
我的代码中已经有这个了
// https://docs.microsoft.com/en-us/dotnet/framework/whats-new/#wcf47
AppContext.SetSwitch("Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols",
false);
AppContext.SetSwitch("Switch.System.Net.DontEnableSchUseStrongCrypto",
false);
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
例外:
由于身份验证失败,因此无法满足对安全令牌的请求。
呼叫者未通过服务验证。
我使用证书(客户端和服务器)通过
进行身份验证Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
答案 0 :(得分:0)
解决以下问题:
客户端:
b.Security.Message.EstablishSecurityContext = false;
b.Security.Message.NegotiateServiceCredential = false;
服务器端:
<message clientCredentialType="Certificate" establishSecurityContext="false" negotiateServiceCredential="false"/>
如
中所述