把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+了,不知啥原因,可能检测有延迟

 

 

至此,免费证书已提升到最高安全等级了!

 

posted @ 2021-11-21 11:51  q彩虹海q  阅读(230)  评论(0)    收藏  举报