在Windows服务器上启用TLS 1.2及TLS 1.2基本原理介绍

首先在这个网站上测试一下自己的服务器究竟处于什么水平。

https://www.ssllabs.com/ssltest/

测试结果显示是支持SSL3.0的并且不支持TLS 1.2。证书使用SHA1签名算法不够强。这点比较容易接受,因为Windows服务器默认并没有开启TLS1.2。

要提高服务器的评级,有3点需要做。

使用SHA256签名算法的证书。

禁用SSL3.0,启用TLS1.2

禁用一些弱加密算法。

由于目前服务器使用的证书是近3年前购买的,正好需要重新购买,顺便就可以使用SHA256签名算法来买新的证书就可以了。在生产环境部署之前,先用测试机测试一下。

根据这篇文章中的3条命令把证书颁发机构的签名算法升级上去。测试环境是Windows2012 R2,默认的签名算法是SHA1

UpgradeCertification Authority to SHA256

http://blogs.technet.com/b/pki/archive/2013/09/19/upgrade-certification-authority-to-sha256.aspx

certutil -setreg ca\csp\CNGHashAlgorithm SHA256
net stop certsvc
net start certsvc

然后,在服务器中添加注册表键值并重启已启用TLS1.2和禁用SSL3.0

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS1.2\Server\Enabled REG_DWORD类型设置为1.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL3.0\Server Enabled REG_DWORD类型设置为0.

重新启动服务器,是设置生效。

由于测试机没有公网地址,所以去下载个测试工具,方便测试。

http://www.bolet.org/TestSSLServer/

可以下载到EXE或者JAVA版本的测试工具,方便的在内网测试服务器支持的加密方式。

测试了一下,发现TLS1.2没有启用。

难道是启用方法不对?于是开始检查各种服务器的日志,也的确发现了TLS1.2不能建立的报错了。

网上查了很多文章,也没有说什么解决办法。后来换了下证书,用回SHA1的证书,TLS1.2就能显示成功启用了。

难道是证书有问题,于是就各种搜索SHA1证书和SHA256证书的区别,同时也测试了一些别人的网站,结果发现别人用SHA256证书也能支持TLS1.2. 难道是我的CA有问题?

又研究了几天,也测试了2008 R2的机器还是同样的问题。正好新买的公网证书也下来了。就拿这张证书先放到测试服务器上测试,结果还是不行。但是别人的服务器的确可以啊。

在此期间发现两篇比较好的文章,用Powershell来帮助我们启用TLS1.2以及如何设定服务器的加密算法顺序。

Setupyour IIS for SSL Perfect Forward Secrecy and TLS 1.2

https://www.hass.de/content/setup-your-iis-ssl-perfect-forward-secrecy-and-tls-12

EnablingTLS 1.2 on IIS 7.5 for 256-bit cipher strength

http://jackstromberg.com/2013/09/enabling-tls-1-2-on-iis-7-5-for-256-bit-cipher-strength/

那么问题究竟出在哪呢?可能的问题,SHA256证书有问题?服务器不支持TLS1.2?然后根据Windows日志中的错误继续查找,都没能找到什么有用的信息。

于是求助朋友,朋友发来一段信息。

TLS 1.2introduced signature algorithms extension where the client advertises supportedsignature and hash algorithm combinations. When the client offers TLS1.2 without signature algorithms extension,schannel server assumes that this client only understands SHA1. If the schannelserver only has a SHA256 certificate, it will terminate the handshake. However,the same client offering TLS≤1.1 will succeed.

同时也提到了RFC5246中的一些信息。

http://www.ietf.org/rfc/rfc5246.txt

If the clientdoes not send the signature_algorithms extension, the

server MUST do the following:

- Ifthe negotiated key exchange algorithm is one of (RSA, DHE_RSA,

DH_RSA, RSA_PSK, ECDH_RSA, ECDHE_RSA),behave as if client had

sent the value {sha1,rsa}.

- Ifthe negotiated key exchange algorithm is one of (DHE_DSS,

DH_DSS), behave as if the client had sentthe value {sha1,dsa}.

- Ifthe negotiated key exchange algorithm is one of (ECDH_ECDSA,

ECDHE_ECDSA), behave as if the client hadsent value {sha1,ecdsa}.

Note: this is a change from TLS 1.1 wherethere are no explicit

rules, but as a practical matter one canassume that the peer

supports MD5 and SHA-1.

Note: this extension is not meaningful forTLS versions prior to 1.2.

Clients MUST NOT offer it if they areoffering prior versions.

However, even if clients do offer it, therules specified in [TLSEXT]

require servers to ignore extensions they donot understand.

Servers MUST NOT send this extension. TLS servers MUST support

receiving this extension.

When performing session resumption, thisextension is not included in

Server Hello, and the server ignores theextension in Client Hello

(if present).

这和我遇到的问题完全符合啊,难道是客户端没有发送签名算法扩展?于是用IE试了下访问网站,发现是可以的,于是抓包看一下,用的协议是TLS1.2。证明TLS1.2在服务器上是已经启用的了。有client hello并且服务器也回应了serverhello。

再仔细看客户端的client hello包,里面确实包含了extension信息。

看之前Testtlsserver.exe测试失败并抓下来的包。并没有server hello的包回来。ClientHello里的确没有扩展信息。

于是,让同事帮忙把测试服务器发布到公网上,用https://www.ssllabs.com/ssltest/

测试一下,果然没有问题。这个困扰我好久的问题终于有了解释。

最后,附上不再支持SSL 3.0 Chrome厂商自家网站的测试结果供大家参考。

(0)

相关推荐

  • 在Windows服务器上启用TLS 1.2及TLS 1.2基本原理介绍

    首先在这个网站上测试一下自己的服务器究竟处于什么水平. https://www.ssllabs.com/ssltest/ 测试结果显示是支持SSL3.0的并且不支持TLS 1.2.证书使用SHA1签名算法不够强.这点比较容易接受,因为Windows服务器默认并没有开启TLS1.2. 要提高服务器的评级,有3点需要做. 使用SHA256签名算法的证书. 禁用SSL3.0,启用TLS1.2 禁用一些弱加密算法. 由于目前服务器使用的证书是近3年前购买的,正好需要重新购买,顺便就可以使用SHA256签

  • 在 Windows服务器中启用/禁用SMBv1、SMBv2和SMBv3的方法

    本文介绍如何在 SMB 客户端和服务器组件上启用/禁用服务器消息块 SMBv1.SMBv2 和 SMBv3. 注意:建议由专业技术工程师完成以下操作. 禁用 SMBv2 和 SMBv3 的影响 我们建议不要禁用 SMBv2 或 SMBv3.禁用 SMBv2 或 SMBv3 只能作为临时故障排除措施.请勿使 SMBv2 或 SMBv3 保持禁用状态. 禁用 SMBv2 的影响 在 Windows 7 和 Windows Server 2008 R2 中,禁用 SMBv2 会停用以下功能: 请求复合

  • 远程管理Windows服务器上的IIS服务

    我们在日常管理Windows服务器上的IIS时一般都是先远程连接服务器桌面然后再直接操作IIS,虽然不是很麻烦,但也是每次都需要输入服务器用户名与密码,那么今天就为大家介绍一种方法可以在本地的IIS上直接管理服务器上的IIS,不需要每次都进入服务器进行管理了. 注:此方法只支持IIS7以上的版本 一.服务器端设置: 进入服务器管理器选择增加角色和功能勾选管理服务并安装. 如下图所示: 安装完成之后,远程的IIS中安全性一栏中会出现管理服务选项.如下图 启用远程连接,设置好之后,右侧启动服务. 二

  • .Net Core WebApi部署到Windows服务器上的步骤

    上一篇学习到了如何简单的创建.Net Core Api和Swagger使用,既然写了接口,那么就需要部署到服务器上才能够正式使用.服务器主要用到了两种系统,Windows和Linux,.Net和Windows都是属于微软爸爸的,那么这一篇就先从部署到Windows服务器系统开始吧. 一.准备服务器 首先,我们需要一台装了Windows Server的云服务器,但是我没有.那么,到这里就结束了.(╮( ̄▽ ̄)╭开玩笑的) 言归正传,我们没有云服务器怎么办,那当然是要买一台了.有人会说有点贵,确实,

  • windows服务器上的iis Gzip压缩功能启用

    如果压缩动态文件(PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃.然后在IIS管理器中,"网站"上面右键-属性,不是下面的某个站点,而是整个网站.进入"服务"标签,选上启用动态内容压缩,静态内容压缩. 然后选中网站下面那个服务器扩展,新建一个服务器扩展.名字无所谓,下面的添加文件的路径是: c:\windows\system32\inetsrv\gzip.dll,然后启用这个扩展. 这时候静态内容是可以压缩的,但是对于动态内容,a

  • 在服务器上启用HTTPS的详细教程

    现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什么要使用HTTPS协议: 虽然SSL并不是无懈可击的,但是我们应该尽可能提高窃听成本 加密通讯不应心存侥幸,所有连接都应被加密 福利: 使用了HTTPS之后,如果网站的访客是从其他已经使用了HTTPS的网站上跳转过来,你就能在Google Analytics中获取更完整的来源信息(比如Hacker News). 本文将为您说明,如何

  • Windows服务器上lsass.exe进程CPU使用率异常问题排查方法

    近期有几台服务器相继出现 lsass.exe 占用CPU过高,也不算太高,而且过了一段时间又会恢复正常,CPU过高直接造成网站打开很慢,周而反复. 在CPU跑高的时候,伴随着一个现像就是网络的浮动,有时候上传居然达到了30M - 90M/s,对外攻击,第一时间就想到有可能是这个原因,那具体怎么查呢? 常见的对外文件,这东西网上搜一下就能找到. 复制代码 代码如下: <?php set_time_limit(86400); ignore_user_abort(True); $packets = 0

  • 在Apache服务器上启用GZip压缩静态内容的方法

    为了优化网站的访问速度,我们可以通过对静态内容进行压缩,从而减少网页加载的时间,大大节省用户的带宽.在这篇文章中,我将介绍如何使用Apache和.htaccess文件进行静态内容压缩. 首先让我介绍一下,我们可以使用两种不同的方法压缩内容:GZip 和 deflate. 介绍 GZip方法在早期的apache版本中使用(在Apache 1.3之前).但在那之后apache引入了deflate方法,相比GZip并没有太大的效果(但仍是非常好的).然而,GZip在apache 1.3之后不再提供更多

  • 在服务器上启用HTTP公钥固定扩展的教程

    公钥固定(Public Key Pinning)是指一个证书链中必须包含一个白名单中的公钥,也就是说只有被列入白名单的证书签发机构(CA)才能为某个域名*.example.com签发证书,而不是你的浏览器中所存储的任何 CA 都可以为之签发.本文讲述了这种机制的背景知识,并提供了 Apache. Lighttpd 和 NGINX 上的配置范例. HTTP 公钥固定扩展 用你使用的银行做个例子,它一直使用 CA 公司 A 为其签发证书.但是在当前的证书体系下,CA 公司 B.CA 公司 C 和 N

  • 在Web服务器上如何启用并运行FTP服务

    如果要允许用户在站点中上载或下载文件,就需要在 Web 服务器上设置 FTP.无论站点是位于 Intranet 还是位于 Internet 上,使用 FTP 在所提供的位置中上载和下载文件的原理是相同的.您需要将文件放在 FTP 服务器上的目录中,以便用户可以建立 FTP 连接并通过 FTP 客户端或启用 FTP 的 Web 浏览器进行文件传输.本文介绍在 Web 服务器上如何启用并运行 FTP 服务. 安装 IIS 7.0 中的 FTP 若要设置 FTP 站点,必须先通过Windows Ser

随机推荐