Certobot管理Let's Encrypt證書的幾個經驗

2021-03-02 虞大膽的嘰嘰喳喳

很多人經常在使用 Certbot 申請 Let’s Encrypt 證書的時候,犯一些小錯誤,或者不知道如何正確操作,這篇文章簡單總結下我的一些經驗,後續如果還有一些新的收穫,還會隨時介紹。
廢話少說,下面列舉下我的一些小經驗。

1:設置郵箱接收證書過期的通知

在使用 certbot 的時候,很多人沒有意識到 account 的創建,每個 account 對應一個 email 地址,可以通過下列命令修改 account 對應的 email 地址。

$ certbot-auto register --update-registration --email admin@example.com

那配置 email 的用處是什麼呢?一張 Let’s Encrypt 證書有效期是 90 天,有效期太短,很多人忘記續期,Let’s Encrypt 會在證書快過期的時候,給 email 地址發送證書快過期的通知。

2:使用 certbot 還是 certbot-auto?

certbot 和 certbot-auto 本質上沒有區別,但很多人疑惑兩者的區別,certbot-auto 對 certbot 做了包裝,可以設置系統環境或自動升級。

我個人更喜歡 certbot-auto 的安裝方式:

$ wget https://dl.eff.org/certbot-auto$ chmod a+x ./certbot-auto

而如果使用包安裝方式,安裝的是 certbot 工具。

$ apt-get install certbot

3:不要 rm 刪除證書

由於 Let’s Encrypt 證書可以通過工具自由申請,很多人會無節制的操作,從而出現了很多無用證書,很多操作者不知道如何處理這些舊證書,就輕易的 rm 刪除。

這是非常不好的一個習慣,因為一些證書如果沒有到期,被攻擊者利用了就比較麻煩,正確處理無用證書的方式如下。

先查看目前機器上申請過的證書:

$ certbot-auto certificates

輸出如下:

Found the following certs:  Certificate Name: simplehttps.com    Domains: *.simplehttps.com    Expiry Date: 2018-10-15 05:21:15+00:00 (VALID: 52 days)    Certificate Path: /etc/letsencrypt/live/simplehttps.com/fullchain.pem    Private Key Path: /etc/letsencrypt/live/simplehttps.com/privkey.pem  Certificate Name: yudadan.com    Domains: *.yudadan.com *.simplehttps.com    Expiry Date: 2018-10-15 04:52:47+00:00 (VALID: 52 days)    Certificate Path: /etc/letsencrypt/live/yudadan.com/fullchain.pem    Private Key Path: /etc/letsencrypt/live/yudadan.com/privkey.pem

然後吊銷證書,相當於通知 Let’s Encrypt,該證書已經無效了。

$ certbot-auto revoke --cert-path /etc/letsencrypt/live/yudadan.com/cert.pem --reason superseded

— reason 表示是吊銷證書的原因,命令運行成功後,/etc/letsencrypt/renewal、/etc/letsencrypt/archive、/etc/letsencrypt/live 下對應的文件都會被刪除。

4:你喜歡採用那種域名校驗方式

Let’s Encrypt 提供了很多插件,能夠滿足各種場景下的證書管理,對於個人網站來說,可能只有一臺 Web 伺服器,在這臺機器上申請、續期證書,然後 Web 伺服器直接引用證書即可,非常的方便。

對於大型企業來說,伺服器非常多,Web 伺服器、7層負載均衡設備都需要部署證書,一般會專門找一臺機器(中控機)運行 Certbot,一旦更新證書,就通過各種方式(最簡單的可能就是 rsync)將證書和密鑰對分發到目標伺服器上。

在申請證書的時候,Let’s Encrypt 會校驗申請者的身份,也就是要確認域名的所有權,主要有三種方式,分別是 http-01、tls-sni-01、dns-01,如果由中控機統一管理證書,建議採用 dns-01 的驗證方式。

在中控機上運行 Certbot,一般情況下無法綁定域名到這臺機器上,而 http-01、tls-sni-01 需要啟動 web 服務,所以理論上來看,這兩種校驗方式無法使用。唯一的校驗方式就是 dns-01,其實這也是最簡單、最直接的方式,如果不想手動配置域名 DNS 解析記錄,可以採用一些插件或一些 hook 來自動處理。

5:使用 staging 伺服器

申請 Let’s Encrypt 證書都是工具化的,為了防止濫用,Let’s Encrypt 對申請證書做了一定的數量限制。

如果操作不熟練,很容易陷入限制,為避免產生這種情況,可以採取兩種方式。

(1)—test-cert

在測試 Certbot 的時候,輸入該參數,表示向 staging 伺服器發送請求,staging 伺服器的限制閥值比較大,不會影響證書申請。

等熟練掌握 Certbot 操作後,再向真實伺服器發送請求。

(2)—dry-run

當使用 renew 或 certonly 操作 Certbot 的時候,加入該參數,不會真正保存證書到本地,也就是說不會陷入限制,這對測試 Certbot 操作非常有用。

6:不要輕易修改 renewal 文件。

在 Certbot 中,所有的證書管理操作都保存在 renewal 文件中,該文件相當於索引,用戶管理證書,打開 /etc/letsencrypt/renewal/simplehttps.com.conf 文件,內容如下圖:

archive_dir 等配置指向一個軟連接,指向了實際的證書。renewalparams 參數存儲了很多申請證書時用到的配置,比如 server 表示 Let’s Encrypt 的伺服器地址(v2版本),採用了 manual(手動)插件,使用 dns-01 域名驗證方式,manual_auth_hook 表示採用的 hook 文件。

這個文件對 Certbot 至關重要,比如 renew 證書的時候會用到,一般情況下不要手動修改,如果 archive 目錄下證書文件移動了,可以修改相關連接參數,然後運行下列命令,重置 renewal 文件。

$ certbot-auto update_symlinks

7:authenticators 插件和 installers 插件別混淆。

在 Certbot 中,存在兩種類型的插件,可在運行具體命令參數的時候,很多人會混淆。

下面兩條命令作用是相同的:

$ certbot-auto$ certbot-auto run install

其中 run 表示申請證書,install 表示採用 installers 插件。

下面兩條命令是相同的:

$ certbot-auto  certonly  $ certbot-auto run certonly

表示採用 authenticators 插件。

在我剛開始學習的時候,總是搞不清楚相關命令行參數,現在明白了嗎?

和 Let’s Encrypt 有關的文章:

推薦下我的新書《深入淺出HTTPS:從原理到實戰》,可以全面了解密碼學應用以及 HTTPS 協議。

相關焦點

  • 使用Let's Encrypt + Nginx生成免費HTTPS證書
    Let’s Encrypt簡介官網:https://letsencrypt.org/Let’s Encrypt作為一個公共且免費SSL的項目逐漸被廣大用戶傳播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等組織人員發起,主要的目的也是為了推進網站從HTTP
  • 「」使用certbot自動更新Let's Encrypt證書
    遇到的問題上一篇說到如何用cerbot申請到一個泛域名SSL證書,申請完成之後當然是美滋滋,可證書有效時間只有3個月,這是一個讓人頭疼的問題,3個月後得再去更新一次,這對於維護來說及為不方便,所以這篇文章給大家一個自動更新Let's Encrypt證書的方法解決方法
  • 使用Certbot免費申請https證書
    怎麼獲取SSL證書為了加快推廣 https 的普及, EEF 電子前哨基金會、 Mozilla 基金會和美國密西根大學成立了一個公益組織叫 ISRG ( Internet Security Research Group ),這個組織從 2015 年開始推出了 Let’s Encrypt 免費證書。
  • 10分鐘生成一張永久免費的SSL證書
    SSL證書是數字證書的一種,類似於駕駛證、護照和營業執照的電子副本。因為配置在伺服器上,也稱為SSL伺服器證書。Let’s Encrypt 也是一個 CA 機構,但這個 CA 機構是免費的!!!也就是說籤發證書不需要任何費用。
  • 通知 從2021年1月起Let's Encrypt SSL證書兼容性將降低
    新的一年即將來臨,同時也給Let 's Encrypt證書的用戶帶來了一些不幸的消息:從2021年1月開始,Let 's Encrypt證書的兼容性將會降低,網站所有者和用戶都會受到影響。Let's Encrypt的根證書即將到期意味著將有三分之一的Android設備將被阻止訪問受Let’s Encrypt SSL證書保護的網站。
  • Let's Encrypt 網站推出中文版
    旨在讓每個網站都能使用 HTTPS 加密的非營利性組織 Let's Encrypt 發布了簡體中文版,方便中文用戶使用 Let's
  • Let's Encrypt吊銷300多萬張證書的事件再次提醒我們,您部署的...
    Let's Encrypt吊銷300多萬張證書的事件再次提醒我們,您部署的HTTPS安全嗎?為避免用戶業務中斷,Let's Encrypt 建議用戶在 3 月 4 日前更換受影響的證書,否則網站訪客會看到一個與證書失效有關的安全警告。
  • Let's Encrypt 已籤發了 1 億個證書
    Let's Encrypt 項目宣布它已籤發了超過 1 億個證書。對於這家非營利 CA 來說,這是一個重要的裡程碑。出於種種原因,數億的標記並不意味著有一億個不同的網站使用了 Let's Encrypt 的加密證書。受 Let's Encrypt 保護的網站數量可能在 1700 萬到 4600 萬之間,具體取決於我們對使用的「網站」的定義。
  • 英語原版閱讀:Rob's Bot
    Rob has a bot. He likes his bot a lot. He got the bot in a box. He did not get his bot in a pot. The bot is not hot.
  • Let's Encrypt證書問題已解決:舊版Android設備不受明年調整影響
    由於 IdenTrust 提供的 DST Root X3 根證書將於 2021 年 9 月 1 日到期,上月初 Let's Encrypt(大型非營利性證書頒發機構之一)宣布將過渡到自己的名為 ISRG Root X1 的根證書上。
  • 「let's」和「let us」 「我們」不一樣?
    學了這麼多年的英語,當你突然看到let's 和let us 時,是不是覺得特別簡單,意思是一樣的 「讓我們」。但是當我們考試時,出現了let's 和 let us 時 ,到底是選哪個呢,你就是一頭霧水。這時候您就要明白他們的區別。
  • let’s 和let us居然不一樣?
    明明記得英語老師教我們,let us 的簡寫是let’s,最近發現他們居然有些不同??他們的區別是什麼?let’s雖然let’s是let us的簡寫,但是,let’s更多是鼓勵對方,讓對方一起去做某事。
  • 短語「let's just say」
    The phrase 「let’s just say」 and 「let’s say」 isoften used to introduce a hypotheticalsituation.It’s used to downplay theseverity of something, but the impliedmeaning is that it’s much more extreme. Itcan be used as an indirect or vague way ofsaying something negative about a person orsituation.
  • Let one's hair down
    Lee HannonReader's question:Although it makes a competent Internet kiosk for the techno-savvy grandparent or cash-strapped college student, the Eee Box 1501 isn't afraid to let its hair down and stream a bit of Hulu.
  • Let’s Encrypt解決舊款Android手機憑證到期的問題
    上個月免費憑證機構Let’s Encrypt警告,舊版Android手機從明年9月後不再信任該組織的憑證,造成用戶瀏覽網頁的困擾。不過本周Let’s Encrypt說,至少到2024年秋天不用擔心這個問題。 這個問題來自和Let’s Encrypt ISG Root X1根憑證交互籤章的IdenTrust DST Root X3,將在2021年9月1日到期。對使用Let’s Encrypt憑證的新版作業系統來說並沒有什麼影響,但卻會對一些通過交互籤章信任其憑證的早期作業系統引發兼容性問題。
  • Hey, let『s take a self...
    Hey, let『s take a self... ? Hey, let『s take a self... bvb09 2019-08-01 01:18 ? Hey, let『s take a selfie! ?
  • 英語常用句型:Let's go
    今日話題:Let's go... 讓我們去……吧!「Let's go...」這個句型表示一種建議、請求、命令、警告等的祈使句,它的標準句型是:「let+賓語+動詞原形+其他」,動詞「go」是「去、走」的意思,可翻譯為「讓我們去……吧!」。
  • 英語let's do sth 和 let us do sth 的區別
    英語中,let’s do sth. 和 let us do sth. 很想似,有時候會弄混,今天我們一起來學習一下它們的區別。1. let’s do sth.:意為「咱們去做某事吧」,指包括說話人和聽者在內去做某事。
  • Let's roll 是什麼意思呀?
    Let's roll !我們走吧!我們開始吧!我們上吧!
  • 如何利用Chatbot實現教育個性化?
    所以,這就是為什麼Chatbot是個人學習最合理、最經濟的選擇。目前,在教學中已有項目開始使用Chatbot。其中,一個由比爾和梅利莎·蓋茨基金會、Facebook和Summit公立學校合作的項目,就使用了Chatbot進行基礎的課程輔導。