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或--quietquiet標志來使除錯誤之外的所有輸出靜音。
如果您要手動更新所有證書,則該 --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 |
Certbot中文文檔
推薦文章: