• 让我们加密免费TLS/SSL证书续订错误

    当我在2015年推出这个网站时,我使用的是一个非常便宜的VPS,每年花费10美元。我从Let's Encrypt获得了一个免费的TLS/SSL证书,并将Nginx配置为服务HTTPS流量。 2016年3月,我将我的网站迁移到了digital Ocean(没有附属链接)SSD云服务器,每月花费5美元(从附属链接获得10美元的免费积分)。为了继续提供HTTPS通信,我还需要将我的TLS/SSL证书传输到新服务器。 Nginx需要两个文件来服务HTTPS流量:一个完整的链证书和您的私钥。在Let's Encrypt中,这两个文件位于 /etc/letsencrypt/live/your-site.com/fullchain.pem /etc/letsencrypt/live/your-site.com/privkey.pem 正确地说,这两个文件是分别指向以下两个文件的符号链接。 /etc/letsencrypt/archive/yoursite.com/fullchain1.pem /etc/letsencrypt/archive/yoursite.com/privkey1.pem 所以我想我只需要把上面两个文件复制到我的Digital Ocean SSD服务器上,我就这么做了。 证书续期问题 您可能知道,让我们对证书加密90天。你必须每三个月更新一次证书。 由于我只有fullchain1,我在续签证书时遇到了困难。pem和privkey1。pem在我的服务器上。与我的Let's encrypt文件相关的所有其他文件都消失了。这两个文件使Nginx能够服务于HTTPS流量,但在您续订证书时,它们是不够的。 我用来更新证书的命令是 sudo letsencrypt renew 但让我们加密客户端并没有尝试更新我的证书。这是因为客户端依赖于续订配置文件来了解如何续订证书,即使用什么插件和什么选项。 因此,我找到了一个示例续订配置文件,并使用下面的命令创建了一个。 sudo nano /etc/letsencrypt/renewal/linuxbabe.com.conf 并在文件中放入以下行。 cert = /etc/letsencrypt/live/linuxbabe.com/cert.pem privkey = /etc/letsencrypt/live/linuxbabe.com/privkey.pem chain = /etc/letsencrypt/live/linuxbabe.com/chain.pem fullchain = /etc/letsencrypt/live/linuxbabe.com/fullchain.pem # Options used in the renewal process [renewalparams] authenticator = webroot installer = None account = 7b3fa88c32887c234036234f6cc6358ab webroot_path = /usr/share/nginx/linuxbabe.com, [[webroot_map]] linuxbabe.com = /usr/share/nginx/linuxbabe.com 上面的配置告诉我们加密客户端使用Webroot插件来更新证书。然后再次运行“续订”命令。我遇到的第一个错误是: renewal configuration file is broken 这是因为两个原因: 我没有证书和锁链。我服务器上的pem文件。 我使用真实的文件,而不是符号链接。 cert.pem是由Let's Encrypt和chain颁发的证书。pem是Let’s Encrypt的中间证书,由根证书颁发机构颁发。这两个文件用于创建完整链。pem文件。您可以发现cert.pem位于链的上方。全链中的pem。pem文件。 所以要获得cert.pem和chain。pem,只需复制fullchain的上半部分。并将其保存到名为cert.pem的文件中。然后复制fullchain的下半部分。并将其保存到名为chain的文件中。佩姆。 现在我有证书了。pem fullchain。佩姆和普里夫基。pem位于/etc/letsencrypt/archive/linuxbabe下。com目录。 然后创建符号链接。 sudo ln -sf /etc/letsencrypt/archive/linuxbabe.com/cert.pem /etc/letsencrypt/live/linuxbabe.com/cert.pem sudo ln -sf /etc/letsencrypt/archive/linuxbabe.com/chain.pem /etc/letsencrypt/live/linuxbabe.com/chain.pem sudo ln -sf /etc/letsencrypt/archive/linuxbabe.com/fullchain.pem /etc/letsencrypt/live/linuxbabe.com/fullchain.pem sudo ln -sf /etc/letsencrypt/archive/linuxbabe.com/privkey.pem /etc/letsencrypt/live/linuxbabe.com/privkey.pem 再次运行证书续订命令。 sudo letsencrypt renew 这一次,我犯了一个错误: max() arg is an empty sequence 上述消息是python中常见的错误消息。但它没有告诉你到底发生了什么。为了解决这个错误,我只需要重命名/etc/letsencrypt/archive/linuxbabe下的四个pem文件。com/。 cd /etc/letsencrypt/archive/linuxbabe.com mv cert.pem cert1.pem mv chain.pem chain1.pem mv fullchain.pem fullchain1.pem mv privkey.pem privekey1.pem 然后再次创建符号链接。现在我可以毫无问题地续签我的证书了。

    2022.03.24 浏览:325