首先在這個網站上測試一下自己的服務器究竟處于什么水平。
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以及如何設定服務器的加密算法順序。
新聞熱點
疑難解答