事件说明

SSL 证书是超文本传输安全协议 HTTPS 的基石,由受信任的根证书颁发机构颁发。而 QingStor 对象存储选用的 SSL 证书由全球使用最为广泛的根证书机构 Let’s Encrypt 签发。

近期 Let’s Encrypt 机构新增了根证书,使得老的根证书在 2021年9月30号 过期。由于 OpenSSL,GnuTLS 等 SSL 库实现问题,Let’s Encrypt 提供的交叉签名根证书可能会导致您的应用在访问 QingStor 对象存储时出现形如 certificate has expired 或证书过期的报错,常见的形式如下:

# wget https://qsstor.com
--2021-10-13 10:15:53--  https://qsstor.com/
Resolving qsstor.com (qsstor.com)... 139.198.8.201
Connecting to qsstor.com (qsstor.com)|139.198.8.201|:443... connected.
ERROR: cannot verify qsstor.com's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
  Issued certificate has expired.
To connect to qsstor.com insecurely, use `--no-check-certificate'.

解决方案

针对以上问题,QingStor 对象存储团队提供了详细的解决方案。分别说明如下:

升级系统

保持您的系统处于更新状态是解决此类问题的最佳方案。如果您的系统不便进行完整的升级,请着重升级 openssl,gnutls 和 ca-certificates。该解决方案适用于如下平台:

  • Windows >= XP SP3

  • macOS >= 10.12.1

  • iOS >= 10

  • Android >= 7.1.1

  • Mozilla Firefox >= 50.0

  • Ubuntu >= xenial / 16.04

  • Debian >= jessie / 8

  • Java 8 >= 8u141

  • Java 7 >= 7u151

  • NSS >= 3.26

不同平台,分别执行不同的命令行。具体内容如下:

  • CentOS / RHEL:

    yum upgrade openssl gnutls ca-certificates
  • Ubuntu / Debian:

    apt upgrade openssl libgnutls30 ca-certificates

手动禁用过期证书

如果您的系统已不再提供更新,或者不便进行系统更新,请手动禁用过期证书,具体的操作方案如下:

  • Linux 平台

    1. 打开并编辑 /etc/ca-certificates.conf 文件;

    2. mozilla/DST_Root_CA_X3.crt 这一行前增加一个英文、半角的感叹号 !,以禁用该证书:

        !mozilla/DST_Root_CA_X3.crt
    3. 编辑完成后,运行如下命令行以更新系统的证书链:

        update-ca-certificates
    4. 在 CentOS 7 及其以后的版本,您还需要执行如下命令行:

        cp /etc/pki/ca-trust/extracted/cadir/DST_Root_CA_X3.pem /etc/pki/ca-trust/source/blacklist
        update-ca-trust
  • Windows 平台

    使用快捷键 Win + r 并输入 certmgr.msc 以打开系统的证书管理器,搜索 DST ROOT CA X3 并删除相关证书后重启即可。

  • Java 平台

    执行如下命令:

    sudo keytool -delete -alias dstrootcax3 -cacerts -storepass 'changeit'