我需要使用TLS 1.2从我的.NET Web服务连接到另一个将强制TLS 1.2的服务.我找到了一个资源,说.NET 4.6默认使用TLS 1.2,这听起来像最简单的解决方案.我在服务器上更新了.NET框架并重新启动.在IIS中,我尝试使用.NET 4.6创建应用程序池,但4.0是唯一的选择.然后我发现了一些东西说它仍然会说4.0因为4.6是对.NET 4.0的"到位"更新.所以我想也许我已经完成了.然而,在我出于无关原因的错误页面上,它表示Microsoft .NET Framework Version:4.0.30319
我似乎没有成功升级.有关如何确保我的应用程序池使用.NET 4.6的更多指针,或更一般地说如何启用TLS 1.2?
Eti*_*her 101
我们实际上只是将.NET Web服务升级到4.6以允许TLS 1.2.
Artem所说的是我们迈出的第一步.我们将Web服务的框架重新编译为4.6,我们尝试更改注册表项以启用TLS 1.2,尽管这不起作用:连接仍在TLS 1.0中.此外,我们不想在机器上禁止SLL 3.0,TLS 1.0或TLS 1.1:其他Web服务可能正在使用此功能; 我们在注册表上回滚了我们的更改.
我们实际上更改了Web.Config文件告诉IIS:"嘿,请在4.6中运行我".
以下是我们在.NET 4.6中的web.config +重新编译中添加的更改:
<system.web>
<compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
<!--Added this httpRuntime -->
<httpRuntime targetFramework="4.6" />
<authentication mode="Windows"/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
并且连接更改为TLS 1.2,因为IIS现在运行4.6中的Web服务(明确说明),4.6默认使用TLS 1.2.
Joh*_* Wu 66
在实例化Web服务客户端之前添加以下代码:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)
或者为了向后兼容:
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)
bre*_*per 20
如果你使用早于4.5的.Net,你就不会在枚举中使用Tls12,所以这里明确提到了状态
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
Run Code Online (Sandbox Code Playgroud)
Art*_*tem 12
需要三个步骤:
通过添加Enabled=0
和DisabledByDefault=1
注册表(完整路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
),在服务器计算机上明确标记SSL2.0,TLS1.0,TLS1.1 .有关详情,请参见屏幕
TLS1.2
按照以下步骤显式启用1. 分别使用Enabled=1
和DisabledByDefault=0
.
注意:验证服务器版本:Windows Server 2003
不支持该TLS 1.2
协议
TLS1.2
仅在应用级别启用,例如上面提到的@John Wu建议.
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
希望本指南有所帮助.
更新 正如@Subbu所说:官方指南
对我来说,下面的工作:
步骤 1:从https://www.microsoft.com/en-us/download/details.aspx?id=48137下载并安装 web Installer exe 到 应用服务器上。安装完成后重启应用服务器。
第 2 步:在web.config 中添加以下更改
<system.web>
<compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
<!--Added this httpRuntime -->
<httpRuntime targetFramework="4.6" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
第 3 步:完成第 1 步和第 2 步后,出现错误“ WebForms UnobtrusiveValidationMode 需要 ScriptResourceMapping for 'jquery'。请添加名为 jquery(case-sensitive) 的 ScriptResourceMapping ”并解决此错误,我在appsettings 中添加了以下键在我的web.config文件中
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
133253 次 |
最近记录: |