折腾几天了windows中的tls1.2启用方法!特此记录一下
开发背景:在一个用.net framework 2.0开发的客户端程序里面嵌入功能调用第三方物联网相关接口,服务器上有一个restful接口用于接收第三方上报的数据及处理,最后再调用第三方的物联网相关接口。本机开发环境Windows
10,客户服务器是Windows Server 2008 R2。
-
第一次写这种物联网相关的接口调用,而且第三方提供的文档比较简单,最基本的报文示例都没。开发环境里面各种摸索一步一个坑,首先在发送HTTP请求前加入代码ServicePointManager.SecurityProtocol
= (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072,单独用(SecurityProtocolType)192或者(SecurityProtocolType)768都不行,那我就直接用(SecurityProtocolType)3072,这个坑是趟过去了。 -
开发环境走通之后放自己公司的服务器测试也通过了,然后放到客户服务器上联调。客户那边反应程序有问题,当出现“不支持请求的安全协议”的时候有点懵,各种联调和跟踪和查询,才发现第三方的域名只支持TLS1.2。网上查询到一般win
7以上才默认支持TLS 1.2,正好还有台win 7的电脑,试了下不支持TLS 1.2,按照网上的方法,做了如下尝试: -
1、首先进入控制面板界面,将控制面板的查看方式修改为“大图标”或“小图标”,点击下面的【internet选项】,然后在internet选项界面的“高级”选卡“设置”框中勾选“使用TLS1.0”、“使用TLS1.1”、“使用TLS1.2”,最后点击应用并确定,运行系统没有变化。
-
2、按照网上方法修改注册表,复制命令保存为后缀名为“.reg”的文件中,直接运行,然后重启电脑,进入注册表看到修改成功,但是还是不能支持发送TLS1.2请求。
3、在上面的基础上修改SSL密码套件顺序,具体步骤按下‘Win +R’,进入“运行”,键入“gpedit.msc”,打开“本地组策略编辑器”->计算机配置->网络->SSL配置设置->在“SSL密码套件顺序”选项上,右键“编辑”->在“SSL密码套件顺序”选在“已启用(E)”,在“SSL密码套件”下修改SSL密码套件算法,将第三个和第四个套件算法放到第一个前面,点击“应用”、“确定”,然后运行程序还是没有发送请求成功。
4、下载工具SSLTools,通过工具修改注册表,按教程操作完毕重启,提示不支持请求的安全协议。
5、下载工具IISCrypto,通过工具修改注册表,按教程操作完毕重启,还是提示不支持请求的安全协议。
这些都尝试了一遍没有解决问题,最后把遇到的问题和思路反馈给同事,同事帮忙解决了Windows Server 2008 R2服务器上的这个问题,因为服务器上只有一个接口,他说装个.net framework
4.0以上版本并且把站点配置为这个新的.net版本,目前服务器能走通。因为这个系统很大,而且上线很久了用户也多,改.net framework版本有点不现实。客户反馈有的win 7和win 10电脑都有这个问题,经过不断尝试win
7上的这个问题,得到了解决。感觉这个应该适用Windows 7 和 Server 2008
R2系统解决该问题,根据系统版本下载更新包(最好不要用google下载,64位的下载链接在google中可能失效),下载完成运行更新包,更新完成之后运行上面下载的工具IISCrypto,下列界面中Server
Protocols和Client Protocols都只勾选TLS 1.0、TLS 1.1、TLS 1.2
点击右上角全选,勾选Reboot,然后Apply,电脑将会重启。
重启之后,运行系统发送TLS 1.2请求成功。因为客户前台大部分电脑是win7的,终于送了一口气。
win 10系统还有上面的问题,因为还没有连接到这台电脑看具体的环境,解决完了再出后续。



