windows server2012 apache 添加TLSv1.2报错
公司的官方商场访问的时候弹窗“您的连接存在安全隐患”,详情中提示“用于加载此网站的连接使用的是TLS1.0或TLS1.1,这两个TLS版本都已过时,将在不久后完全停用。届时,用户将无法再加载此网站。服务器应启用TLS1.2或更高版本。”
一、复现问题
为解决此问题,首先需要让问题可以复现,因为一旦点击继续访问进入到网站之后,下次再访问的时候就会直接进入,无法复现问题,除非更换电脑后在测试,这种反馈方式效率太低,所以使用以下网站测试是否支持TLS1.2。
https://myssl.com/
二、现状分析
查看一下现有服务器的apache版本和openssl的版本,经查看版本为:
Apache 2.4.10
openssl 0.9.8
经查,若要支持TLS1.2 版本要求如下:
Apache >=2.2.32
Openssl >=1.0.1
所以openssl的版本太低,需要进行更换升级。
下载了openssl1.0.1 32位(64位应该也可以),将以下三个文件拷贝至Apache\bin目录下(需要提前停用Apache服务)
libeay32.dll
openssl.exe
ssleay32.dll
至此已具备支持TLS1.2的基础环境
三、配置Apache
购买或者使用openssl生成证书,将证书拷贝到指定目录,这里拷贝至Apache家目录的cert中。
vhost.conf增加配置如下:
SSLEngine on
#SSLProtocol all -SSLv3
#SSLProtocol TLSv1.2
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile "cert/6002070_public.crt"
SSLCertificateKeyFile "cert/6002070.key"
SSLCertificateChainFile "cert/6002070_chain.crt"
重启服务后在https://myssl.com/测试一下
发现网站支持TLS1.2了
四、遇到的问题
在网站找apache如何支持TLS1.2时,基本所有文章都建议Apache配置如下:
但是配置完Apache重启一直启动不了,error日志提示如下:
[core:notice] [pid 5912:tid 1592] AH00094: Command line: ‘C:\phpStudy\Apache\bin\httpd.exe -d C:/phpStudy/Apache’
在dos界面执行此命令后看到
一直提示非法的协议,然后上网查询要求配置两个位置:
1、修改了windows操作系统的注册表,增加了对TLS1.2的支持,然而并不起作用。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2
2、上网查询怀疑是加密算法不支持,在安全策略中配置了支持的加密方式,gpedit.msc–>计算机配置–>管理模板–>网络–>SSL配置设置,启用了SSL密码套件顺序,并使用了SHA256 and SHA384 cipher suiters
然后最后测试Apache仍然起不来,最终的解决方案是将Apache的配置文件中的SSLProtocol all 注释掉,也就是第三段中的配置。跟以上修改的配置没有关系。