把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改为红色所示

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文件:

在最后面 上面添加以下配置:

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

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