更改网站证书后 Firefox 报告 SEC_ERROR_CA_CERT_INVALID

更改网站证书后 Firefox 报告 SEC_ERROR_CA_CERT_INVALID

我在内部网络上运行了一台服务器。为了支持 SSL,我设置了一个内部 CA(使用 OpenSSL)并为该服务器颁发了证书。证书链如下:

Example Root CA V1
+-- server.example.com

我在服务器上安装了服务器证书,并在 Firefox 中导入了根证书,到目前为止一切正常。

由于根证书即将过期,我决定建立一个具有更深层次结构的全新 CA:

Example Root CA V2
+-- Example Signing CA V2
    +-- server.example.com

我还创建了由签名 CA 签名的用户证书。

然后我在 Firefox 中添加了用户证书。新的根 CA 显示在“授权机构”下,中间证书(签名 CA)显示在“其他”下。对于根证书,我在“编辑信任”中设置了所有三个复选标记。

接下来,我更新了服务器上的证书。当我尝试连接到服务器时,Firefox 抱怨连接不安全:

server.example.com uses an invalid security certificate.
The certificate is not trusted because it was issued by an invalid CA certificate.
Error code: SEC_ERROR_CA_CERT_INVALID

单击错误代码显示:

https://server.example.com/

Issuer certificate is invalid.

HTTP Strict Transport Security: true
HTTP Public Key Pinning: false

Certificate chain: 

然后是服务器证书、中间 CA 证书和根 CA 证书。

服务器运行 ownCloud 和 Webmin;到目前为止,我只替换了 Webmin 证书。Firefox 的版本是 50.1.0。

这里有什么问题?

答案1

解决了。​​显然,SEC_ERROR_CA_CERT_INVALID这表明链中的某个证书未获得批准/信任,无法用于其用途。

检查我的证书后,我发现我的中级 CA 证书不是符合其 x509_v3 扩展的 CA 证书。我使用以下设置重新生成了中级证书:

X509v3 extensions:
    X509v3 Extended Key Usage: critical
        TLS Web Server Authentication, TLS Web Client Authentication
    X509v3 Basic Constraints: 
        CA:TRUE
    X509v3 Key Usage: 
        Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement, Certificate Sign, CRL Sign

然后我使用有效的中级证书再次签署了服务器证书请求,并将中级证书导入 Firefox。现在中级证书显示在“授权机构”下,而不是“其他”下。

唯一的挑战是在 Webmin 中替换证书,因为我实际上将自己锁定在了 Web UI 之外。

  • SSH 进入服务器
  • sudo vi /etc/webmin/miniserv.conf
  • 更改ssl=1ssl=0并保存
  • sudo /etc/init.d/webmin restart
  • 通过纯 HTTP 登录 Webmin,并用好的证书替换该证书,然后再次注销。
  • sudo vi /etc/webmin/miniserv.conf
  • ssl=0ssl=1并保存
  • sudo /etc/init.d/webmin restart

当我尝试通过 HTTPS 连接到我的服务器时,它成功了。

经验教训:使用 OpenSSL 签署证书请求时,无需验证以确保签名证书实际上是 CA 证书。一切似乎都运行正常,在第一次尝试连接到服务器之前,您不会收到错误或任何其他表示有问题的迹象。

相关内容