服务器更换SSL证书,微信小程序报600001

项目场景:

某政府单位项目的SSL证书一直使用免费华为SSL证书,一年到期,需要重新申请。因此,服务器需要更换SSL证书。


问题描述

在nginx组件中成功替换到最新证书并重启,测试使用浏览器访问系统一切正常,成功使用了最新证书进行TLS握手协议。但是,存在部分用户在使用小程序时会出现问题。此类用户使用小程序会报错误:errno: 600001, errMsg: “request:fail -102:net::ERR_CONNECTION_REFUSED“
600001


原因分析:

第一时间想到了是否由于 SSL证书更换导致,便先去核对SSL证书和Nginx的配置。

  • SSL证书核对
    通过使用 myssl网站进行SSL/TLS安全评估报告,发现此网站评价为A,符合业务需求,并没有问题
    myssl
    网上查到网站,说需要服务器支持 TLSv1 TLSv1.1 TLSv1.2 此三种协议就可以。又通过验证TLS协议的网站查看,发现满足以上条件。
    TLS协议
    根据以上判断SSL证书没有问题!

  • Nginx配置核对
    查看配置文件无误

      #https 请求 服务器开放端口                  
    listen 443 ssl;
    server_name localhost xxxx.cn;     
   
      #加密配置文件
    ssl_certificate /usr/local/nginx/cert/scs1646878988638_server.crt;        
    ssl_certificate_key /usr/local/nginx/cert/scs1646878988638_server.key;   
    
    ssl_session_timeout 60m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

参考网站:HTTPS安全与兼容性配置指南

最后,只能按照浏览器相关的经验,应该是微信小程序缓存旧证书的原因,导致微信小程序还使用旧证书进行TLS握手。


解决方案:

解决方案应该有两个:

  1. 等待
    应该微信会自动清理此小程序缓存
  2. 手动清除此微信小程序的缓存(不能保证立刻生效)
    按照此教程微信小程序缓存清理