自签名 SSL 证书可以续订吗?如何?

Fri*_*dFX 23 certificate ssl openssl

我对 SSL 证书还很陌生,想知道我用于 HTTPS 的自签名证书是否可以续订以延长其到期日期,而网站的所有客户端都不必通过他们拥有的“允许例外”流程当他们第一次访问该站点时,或者在颁发从头创建的新自签名证书时执行此操作。

发现以下教程显示了如何使用更新自签名证书,openssl但我无法使用它,因此我的浏览器静默接受它而不显示“不受信任的站点”警告屏幕:

  # cd /etc/apache2/ssl
  # openssl genrsa -out togaware.com.key 1024
  # chmod 600 togaware.com.key
  # openssl req -new -key togaware.com.key -out togaware.com.csr
    AU
    ACT
    Canberra
    Togaware
    Data Mining
    Kayon Toga
    Kayon.Toga@togaware.com
    (no challenge password)
  # openssl x509 -req -days 365 -in togaware.com.csr \
            -signkey togaware.com.key -out togaware.com.crt
  # mv apache.pem apache.pem.old
  # cp togaware.com.key apache.pem 
  # cat togaware.com.crt >> apache.pem 
  # chmod 600 apache.pem
  # wajig restart apache2
Run Code Online (Sandbox Code Playgroud)

我的设置与此答案中的描述非常相似,我使用的是 CRT 和 KEY 文件(来自本教程)而不是 PEM 文件,所以也许我在尝试将其应用于我的案例时搞砸了一些事情。

再说一次,我发现许多论坛条目表明更新自签名证书是完全不可能的,我必须从头开始创建一个新证书。

任何帮助将不胜感激......或者这个问题更适合https://serverfault.com/https://superuser.com/吗?

小智 26

根据定义,自签名证书只能通过直接信任来信任,即 Firefox 等 Web 浏览器显示的“允许异常”过程。一个非常具体的证书,直到最后一位,都被声明为“受信任的”。不退出此模型,证书中的任何内容都无法更改,特别是到期日期,它是证书中包含的数据的一部分。

你可以把续期想象成一种家庭的事情:当一个证书被“续期”时,它实际上被一个弟弟妹妹取代。客户端静默接受新证书,因为它与以前的证书共享相同的祖先。自签名证书是固有的孤儿:它们没有祖先。因此,没有兄弟姐妹,也没有自动变速器。

(除了这个祖先的东西,renew就是创建一个新证书。证书是不可变的。“Renewal”是一种思考新旧证书关系的方式。)

如果您希望能够进行静默续订,那么您需要一个自签名CA证书。您从该 CA 为您的服务器发出证书,并要求您的客户信任该 CA。当然,这要求很高:您信任的 CA 是可以在您眼中伪造整个 Internet 的 CA。基本上,这个解决方案是关于创建和维护您自己的 CA,这是一种责任和一些工作。


下次生成自签名证书时,请使其长期有效。证书到期主要是为了使撤销工作(证书到期可以防止 CRL 无限增长)。对于自签名证书,没有撤销,因此您可以使证书有效期为 20 年。或者 2000 年,就此而言(尽管2038 年问题可能会在某个时候出现,具体取决于客户端软件)。

  • @FriendFX 是的,该教程仅适用于自签名 CA 证书。如果您使用相同的密钥对和主题,您可以创建多个 CA 证书,每个证书都满足作为已颁发证书的有效颁发者的要求;这些证书甚至可以由不同的父 CA 颁发,这称为“跨链”。 (3认同)