通过TLS 1.2协议调用REST请求时出现问题

时间:2019-02-02 17:48:26

标签: .net vb.net tls1.2

我正在尝试通过TLS 1.2协议填充REST请求并出现问题:

  

请求已中止:无法创建SSL / TLS安全通道

1)应用程序托管在Windows 2016服务器上

2)注册已启用HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ TLS 1.2文件夹中启用的服务器和客户端配置

3)应用程序被迫使用TLS协议

  

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

4)应用程序在.Net 4.7上运行

任何想法我都会很合适

谢谢

1 个答案:

答案 0 :(得分:0)

确保检查所有这些注册表设置

  

计算机\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v4.0.30319

     

计算机\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Cryptography \ Configuration \ SSL \ 00010002

     

计算机\ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ TLS1.2 \ Server

通常,除非明确配置协议版本,否则WCF框架会自动选择TLS 1.2之前可用的最高协议。但是,尽管我们没有注意到,调用REST API的行为可能有所不同。

在我们的案例中,这不是必需的

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

但这是:

<system.web>
    <compilation targetFramework="4.6" />
    <httpRuntime targetFramework="4.6" />
    <customErrors mode="Off" />   </system.web>

以及这个:

<basicHttpBinding>
        <binding name="HTTPSEndpoint" messageEncoding="Text">
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None" />
          </security>
        </binding>

希望这会有所帮助。

参考文献:

  

Enable TLS 1.2 for specific Ciphers

     

.Net Framework 4.6.1 not defaulting to TLS 1.2

     

https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls   https://blogs.msdn.microsoft.com/friis/2017/10/09/troubleshooting-tls-ssl-scenario-2/   https://textslashplain.com/2015/10/12/viewing-https-handshakes-in-fiddler/