Certbot 更改证书的域
更改证书的域
--cert-name
通过使用-d
或--domains
标志指定新的域,该标志还可用于修改证书包含的域。如果证书example.com
先前包含example.com
和www.example.com
,则可以仅example.com
通过example.com
使用-d
或--domains
标志进行指定,将其修改为仅包含。例:
certbot certonly --cert-name example.com -d example.com
可以使用相同的格式来扩展证书包含的域集,或完全替换该域集:
certbot certonly --cert-name example.com -d example.org,www.example.org
吊销证书
如果您的帐户密钥已被盗用,或者您另外需要吊销证书,请使用revoke
命令来这样做。请注意,该revoke
命令采用证书路径(以结尾cert.pem
),而不是证书名称或域。例:
certbot revoke --cert-path /etc/letsencrypt/live/CERTNAME/cert.pem
您还可以使用该reason
标志指定吊销证书的原因。原因包括:unspecified
这是默认的,以及keycompromise
, affiliationchanged
,superseded
,和cessationofoperation
:
certbot revoke --cert-path /etc/letsencrypt/live/CERTNAME/cert.pem --reason keycompromise
另外,如果证书是通过--staging
或--test-cert
标志获得的测试证书,则必须将该标志传递给 revoke
子命令。撤销证书(或执行其他证书管理任务)后,可以使用delete
子命令从系统中删除证书的所有相关文件:
certbot delete --cert-name example.com
注意
如果您不用delete
完全删除证书,那么它将在下一次续订事件时自动续签。
注意
吊销证书将不会影响Let’s Encrypt服务器施加的速率限制。
续订证书
注意
让我们加密CA颁发短期证书(90天)。确保至少每3个月更新一次证书。
也可以看看
通过发行版获得的许多certbot客户端都具有开箱即用的自动更新功能,例如通过安装的Debian和Ubuntu版本apt
,通过EPEL 安装的CentOS / RHEL 7等。
从0.10.0版本开始,Certbot支持一项renew
操作,以检查所有已安装的证书是否即将到期,并尝试对其进行续订。最简单的形式就是
certbot renew
此命令尝试续订在30天内到期的所有先前获得的证书。除非您指定其他插件或选项,否则将使用与最初颁发证书时使用的插件和选项相同的插件和选项。不同于certonly
,它renew
作用于多个证书,并始终考虑每个证书是否接近到期。因此,renew
适合(并设计为)自动使用,以允许您的系统在适当时自动续订每个证书。由于renew
仅更新即将到期的证书,因此可以根据需要频繁运行它-因为通常不会采取任何措施。
该renew
命令包括在证书更新之前或之后运行命令或脚本的挂钩。例如,如果您具有使用 standalone 插件获得的单个证书,则可能需要在更新之前停止Web服务器,以便独立服务器可以绑定到必要的端口,然后在插件完成后重新启动它。例:
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
如果钩子以非零退出代码退出,则错误将被打印到,stderr
但无论如何都会尝试进行更新。失败的挂钩不会直接导致Certbot以非零的退出代码退出,但由于续订失败时Certbot会以非零的退出代码退出,因此导致续签失败的失败的挂钩将间接导致退出代码为非零。挂钩仅在证书需要更新时才运行,因此您可以频繁运行上述命令而不必停止Web服务器。
当Certbot检测到证书到期更换,--pre-hook
以及--post-hook
钩前后运行每次尝试更新它。如果您希望挂钩仅在成功续订后才能运行,请--deploy-hook
在这样的命令中使用 。
certbot renew --deploy-hook /path/to/deploy-hook-script
您还可以通过将文件放在Certbot的配置目录的子目录中来指定挂钩。假设您的配置目录为 /etc/letsencrypt
,在/etc/letsencrypt/renewal-hooks/pre
, /etc/letsencrypt/renewal-hooks/deploy
和中找到的任何可执行文件 , /etc/letsencrypt/renewal-hooks/post
将在使用renew
子命令续订任何证书时分别作为pre,deploy和post挂接运行。这些挂钩按字母顺序运行,并且不为其他子命令运行。(挂钩的运行顺序由其文件名中字符的字节值确定,而不取决于您的语言环境。)
在命令行,配置文件或续订配置文件中指定的挂钩在运行这些目录中的所有挂钩之后照常运行。一个较小的例外情况是,如果在其他位置指定的钩子只是相同类型的钩子目录中可执行文件的路径(例如,您的预钩子是中的可执行文件的路径/etc/letsencrypt/renewal-hooks/pre
),则该文件不会第二次运行。您可以通过包含--no-directory-hooks
在命令行中来阻止Certbot自动运行在这些目录中找到的可执行文件。
通过运行可以找到有关钩子的更多信息 。certbot --help renew
如果确定此命令在没有人为干预的情况下成功执行,则可以将命令添加到crontab
(由于仅在确定证书即将到期时才更新证书,因此该命令可以定期运行,例如每周或每隔天)。在这种情况下,您可能想使用-q
或--quiet
quiet标志来使除错误之外的所有输出静音。
如果您要手动更新所有证书,则该 --force-renewal
标志可能会有所帮助;它会导致在考虑续签时忽略证书的过期时间,并尝试续订每个已安装的证书,无论其使用期限如何。(此表格不适合每天运行,因为每个证书每天都会更新,这会很快遇到证书颁发机构速率限制。)
请注意,提供给这些选项的选项将适用于 所有尝试续签的证书;例如, 将尝试使用4096位RSA公钥用等效的证书替换每个即将到期的证书。如果使用指定的选项成功续订了证书,则这些选项将被保存并用于以后对该证书的续订。certbot renew``certbot renew --rsa-key-size 4096
另一种形式可以对更新过程进行更细粒度的控制(一次更新一个指定的证书),它具有通过标志指定的特定证书的主题域的完整集合。您可能还希望包含或标志以防止在用户输入上发生阻塞(这在从cron运行命令时很有用)。certbot certonly``-d``-n``--noninteractive
certbot certonly -n -d example.com -d www.example.com
在这种情况下,必须指定证书涵盖的所有域,以便更新和替换旧证书而不是获取新证书;不要忘记任何www.
域名!指定域的子集将创建一个仅包含这些域的新的单独证书,而不是替换原始证书。当使用与现有证书对应的一组域运行时,该certonly
命令将尝试续订该特定证书。
请注意,如果您不续订即将过期的证书,则CA会将通知电子邮件发送到您提供的地址。
Certbot致力于改善续订过程,对于将这些命令集成到您的个人环境中给您带来的任何不便,我们深表歉意。
注意
certbot renew
如果续订尝试失败,则退出状态将仅为1。这意味着如果不需要更新证书,则退出状态将为0。如果您编写自定义脚本并希望仅在实际更新证书之后才运行命令,则将需要使用,因为在成功更新和不需要更新时退出状态均为0。certbot renew``--deploy-hook
修改续订配置文件
颁发证书时,默认情况下,Certbot将创建一个续订配置文件,该文件跟踪运行Certbot时选择的选项。这样,Certbot可以在续订时再次使用相同的选项。这些续订配置文件位于/etc/letsencrypt/renewal/CERTNAME
。
对于高级证书管理任务,可以手动修改证书的续订配置文件,但是不建议这样做,因为它很容易破坏Certbot的续订证书的能力。如果选择修改续订配置文件,建议您使用以下命令测试其有效性。certbot renew --dry-run
警告
修改其中的任何文件/etc/letsencrypt
可能会损坏它们,因此Certbot无法再正确管理其证书,我们不建议这样做。
对于大多数任务,最安全的做法是将自己指向该文件的符号链接,或者 --deploy-hook
根据您的操作情况(例如,以不同方式组合证书和密钥,或者根据这些文件来复制/制作新文件)具有其他程序要求的具有不同特定权限的事物的副本)。
如果将其中的内容/etc/letsencrypt/archive/CERTNAME
移动到新文件夹,请首先在续订配置文件中指定新文件夹的名称,然后运行以将符号链接指向新文件夹。certbot update_symlinks``/etc/letsencrypt/live/CERTNAME
如果您希望每次运行时Certbot更新其符号链接位置的实时证书文件位于不同的位置,请首先将其移动到该位置,然后在续订配置文件中指定四个文件中每个文件的完整路径。由于符号链接是相对链接,因此必须在其后调用。certbot update_symlinks
例如,假设证书的续订配置文件先前包含以下指令:
archive_dir = /etc/letsencrypt/archive/example.com
cert = /etc/letsencrypt/live/example.com/cert.pem
privkey = /etc/letsencrypt/live/example.com/privkey.pem
chain = /etc/letsencrypt/live/example.com/chain.pem
fullchain = /etc/letsencrypt/live/example.com/fullchain.pem
以下命令可用于指定这些文件的位置:
mv /etc/letsencrypt/archive/example.com /home/user/me/certbot/example_archive
sed -i 's,/etc/letsencrypt/archive/example.com,/home/user/me/certbot/example_archive,' /etc/letsencrypt/renewal/example.com.conf
mv /etc/letsencrypt/live/example.com/*.pem /home/user/me/certbot/
sed -i 's,/etc/letsencrypt/live/example.com,/home/user/me/certbot,g' /etc/letsencrypt/renewal/example.com.conf
certbot update_symlinks
自动续订
当您使用通过系统软件包管理器安装的软件包时,许多Linux发行版都提供了自动续订。下表是不完整的发行版列表以及这样做的方法。
如果你不能确定是否你的系统中本已自动化的,请参阅您的发行版的文档,或检查您的系统的crontab(通常在/etc/crontab/
和/etc/cron.*/*
和systemd定时器(systemctl list-timers
)。
具有自动续订的发行版
发行名称 | 发行版本 | 自动化方法 |
---|---|---|
CentOS | EPEL 7 | systemd |
Debian | jessie | cron,systemd |
Debian | stretch | cron,systemd |
Debian | testing/ SID | cron,systemd |
Fedora | 26 | systemd |
Fedora | 27 | systemd |
RHEL | EPEL 7 | systemd |
Ubuntu | 17.10 | cron,systemd |
Ubuntu | certbot PPA | cron,systemd |
推荐文章: