把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改为红色所示
<Connector
port="443"
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文件:
在最后面 </web-app> 上面添加以下配置:
<!-- http 强行重定向到https,不配的话不能提到A+ -->
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
(大坑,用上面得配置,http强转到https后,参数丢失了,先不要这么配!我先去研究研究,为什么会参数丢失!)
(下面这个配置没问题!)
<!-- 开启hsts 这个必填 -->
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<init-param>
<param-name>hstsEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>hstsMaxAgeSeconds</param-name>
<param-value>31536000</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
配置完毕后,重启tomcat,第一次刷新报告,好像还是A,等过了几分钟,再测试下,就提升到A+了,不知啥原因,可能检测有延迟

至此,免费证书已提升到最高安全等级了!
浙公网安备 33010602011771号