软媒设计
[SSL]Let's Encrypt浏览器提示不合法解决方法

在配置Let's Encrypt证书时,发现部分浏览器会提示不安全;虽然Goole、Apple等公司的旗下产品对SSL证书有严格的管控,但是没理由不兼容Let's Encrypt的证书。

我是用的是Nginx作为Http服务器,并更新到1.19的版本上。

server {
    listen 443 ssl;
    server_name         map.xxxx.vip;
    ssl_certificate     xxx.crt;
    ssl_certificate_key xxx.key;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 30m;
    location / {
      proxy_redirect off;
      proxy_pass https://xxx.app;
      proxy_http_version 1.1;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

1. 配置符合PFS规范的加密套件

# 指定加密方式
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;

# 指定TLS协议 TLSv1 TLSv1.1 TLSv1.2
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

# 由服务器决定加密方式
ssl_prefer_server_ciphers on;

# 

# 优化ssl
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 30m;

2. 补全证书链导

部分证书颁发商,提供的证书并不包含根节点CA证书,可能会导致部分系统无法验证有效性。

可以在证书链下载/证书链修复这个网站上传公钥,会自动帮你修复证书链,然后将ssl_certificate替换为新公钥即可。

最后可以使用myssl评估工具评估下https的安全性。

image.png