把letsencrypt申请的免费证书安全等级提到最高
随手记
问题背景:
为什么要提升安全等级?最近在微信玩小程序,真机调试时,发现服务器的api调用失败,勾上不校验合法域名也不行,但是把https换成http就可以,查看原因后发现是服务器的https安全等级不够导致的。
如何免费申请https之前已经写过博客了,这里不多赘述了:https://www.cnblogs.com/caihonghai/p/15369238.html
研究过程:
域名安全等级测试网址:https://myssl.com/ ,输入域名测试后提示:证书链不完整,安全等级为B级
第一步先补全证书链:https://myssl.com/chain_download.html
输入域名(没有https前缀),加端口443,点击获取证书链,然后把下面生成的RSA证书链复制到一个txt文件,重命名为xxx.crt
得到完整的证书链后,第二部需要重新生成pfx文件(因为配置tomcat真正用到的是它):https://www.myssl.cn/tools/merge-pfx-cert.html
点击生成后,把生成的ssl.pfx文件复制到服务器,替换掉原来的那个,注意部署时新pfx文件的密码,要与生成时的保持一致
至此证书链补全完毕,点击刷新报告,再次检测:
可以看到证书等级已经提升到A了,证书链也完整了,服务器使用https时,微信小程序也可以正常访问了。
但是,都走到这一步了,干脆直接把安全等级拉满吧!
提升到A+,需要配置关闭TLS1.0,
修改tomcat的server.xml文件,把SSLProtocol改为红色所示
protocol="HTTP/1.1"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="C:/cert/ssl.pfx"
keystoreType="PKCS12"
keystorePass="xxxxxx"
clientAuth="false"
SSLProtocol="TLSv1.2+TLSv1.1" ......
还需要开启HSTS:
修改tomcat/conf/web.xml文件:
在最后面 上面添加以下配置:
CLIENT-CERT Client Cert Users-only Area SSL /* CONFIDENTIAL
(大坑,用上面得配置,http强转到https后,参数丢失了,先不要这么配!我先去研究研究,为什么会参数丢失!)
(下面这个配置没问题!)
httpHeaderSecurity org.apache.catalina.filters.HttpHeaderSecurityFilter hstsEnabled true hstsMaxAgeSeconds 31536000 antiClickJackingOption SAMEORIGIN true httpHeaderSecurity /* REQUEST
配置完毕后,重启tomcat,第一次刷新报告,好像还是A,等过了几分钟,再测试下,就提升到A+了,不知啥原因,可能检测有延迟
至此,免费证书已提升到最高安全等级了!