Certbot命令和獲取各版本證書
Certbot命令
Certbot使用許多不同的命令(也稱為“子命令”)來請求諸如獲取,更新或吊銷證書之類的特定操作。本文檔將討論最重要和常用的命令。文檔末尾也會出現一個詳盡的列表。
如果您的系統使用較舊的包,那么web服務器上的certbot腳本可以命名為letsencrypt,如果您使用替代的安裝方法,則可以命名為certbot-auto。在整個文檔中,只要看到certbot,就按照需要使用正確的名稱交換。
獲取證書(并選擇插件)
Certbot客戶端支持兩種用于獲取和安裝證書的插件:身份驗證器和安裝程序。
Authenticator是與certonly命令一起使用以獲取證書的插件。驗證者驗證您是否控制了要為其請求證書的域,獲取了指定域的證書,并將該證書/etc/letsencrypt放置在計算機上的目錄中。身份驗證器不安裝證書(它不編輯服務器的任何配置文件以提供獲得的證書)。如果您指定多個域進行身份驗證,它們將全部列在一個證書中。要獲得多個單獨的證書,您將需要多次運行Certbot。
安裝程序是與install命令一起使用以安裝證書的插件。這些插件可以修改網絡服務器的配置,以使用certbot獲得的證書通過HTTPS為您的網站提供服務。
能夠同時執行這兩種操作的插件可以與certbot run命令一起使用,這是未指定命令時的默認值。所述run子命令還可以用于指定一個組合不同的鑒權和安裝插件。
| 插入 | 驗證碼 | 研究所 | 筆記 | 挑戰類型(和港口) |
|---|---|---|---|---|
| apache | Y | Y | 使用Apache自動獲取和安裝證書。 | http-01 (80) |
| nginx | Y | Y | 使用Nginx自動獲取和安裝證書。 | http-01(80) |
| webroot | Y | N | 通過寫入以下內容的webroot目錄獲得證書已經運行的網絡服務器。 | http-01(80) |
| standalone | Y | N | 使用“獨立”網絡服務器獲取證書。需要端口80可用。這對沒有網絡服務器的系統,或者與不支持或不希望使用本地Web服務器。 | http-01(80) |
| DNS插件 | Y | N | 這類插件可自動通過以下方式獲取證書修改DNS記錄以證明您可以控制域。以這種方式進行域驗證是從Lets獲得通配符證書的唯一方法加密。 | DNS-01(53) |
| manual | Y | N | 通過向您提供指導以幫助您獲得證書自己執行域驗證。另外允許您指定腳本以自動執行驗證任務定制的方式。 | http-01(80)或 dns-01(53) |
插件使用ACME協議來證明您控制著一個域。選項為http-01 (使用端口80)和dns-01(要求在端口53上配置DNS服務器,盡管通常與Web服務器不在同一臺計算機上)。一些插件支持多種挑戰類型,在這種情況下,您可以通過選擇一個--preferred-challenges。
也有許多第三方插件可用。下面我們將更詳細地描述每個插件的使用環境以及使用方法。
Apache
Apache插件當前支持基于Debian,Fedora,SUSE,Gentoo和Darwin的現代操作系統。這可以自動在Apache Web服務器上獲取和安裝證書。要在命令行上指定此插件,只需添加即可 --apache。
Webroot
如果您正在運行的本地Web服務器能夠修改所提供的內容,并且不想在證書頒發過程中停止該Web服務器,則可以使用webroot插件通過添加certonly和獲取證書。--webroot在命令行上。另外,您需要指定--webroot-path 或-w使用包含您的網絡服務器提供的文件的頂級目錄(“網絡根目錄”)。例如, 或是兩個常見的webroot路徑。--webroot-path /var/www/html``--webroot-path /usr/share/nginx/html
如果您要一次獲得多個域的證書,則該插件需要知道每個域的文件從何處提供,這可能是每個域的單獨目錄。當請求多個域的證書時,每個域將使用最近指定的--webroot-path。因此,例如
certbot certonly --webroot -w /var/www/example -d www.example.com -d example.com -w /var/www/other -d other.example.net -d another.other.example.net
將使用/var/www/example前兩個和后兩個的webroot目錄 獲得所有這些名稱的單個證書 /var/www/other。
webroot插件通過為中的每個您請求的域創建一個臨時文件來工作${webroot-path}/.well-known/acme-challenge。然后,讓我們加密驗證服務器發出HTTP請求,以驗證每個請求域的DNS都解析為運行certbot的服務器。向您的Web服務器發出的示例請求如下所示:
66.133.109.36 - - [05/Jan/2016:20:11:24 -0500] "GET /.well-known/acme-challenge/HGr8U1IeTW4kY_Z6UIyaakzOkyQgPr_7ArlLgtZE8SX HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"
請注意,要使用webroot插件,必須將服務器配置為提供來自隱藏目錄的文件。如果/.well-known您的Web服務器配置對它進行了特殊處理,則可能需要修改配置,以確保/.well-known/acme-challengeWeb服務器為內部文件提供服務。
Nginx
Nginx插件應該適用于大多數配置。我們建議您在使用Nginx配置之前先對其進行備份(盡管您也可以使用certbot --nginx rollback來將更改恢復為配置)。您可以通過--nginx在命令行使用它。
certbot --nginx
Standalone
如果您不想使用(或當前沒有)現有的服務器軟件,請使用獨立模式獲取證書。獨立插件不依賴獲取證書的計算機上運行的任何其他服務器軟件。
要使用“獨立”網絡服務器獲取證書,可以通過 在命令行中包含certonly和使用獨立插件--standalone。此插件需要綁定到端口80才能執行域驗證,因此您可能需要停止現有的Web服務器。
您的計算機仍然必須能夠使用每個請求的域名在指定端口上接受來自Internet的入站連接。
默認情況下,Certbot首先嘗試使用IPv6綁定到所有接口的端口,然后再使用IPv4綁定到該端口。只要至少一個綁定成功,Certbot就會繼續。在大多數Linux系統上,IPv4流量將被路由到綁定的IPv6端口,并且在第二次綁定期間可能會失敗。
使用--<challenge-type>-address明確地告訴Certbot哪個接口(和協議)來綁定。
DNS插件
如果您想獲得通配符證書從Let’s Encrypt或certbot在目標網絡服務器以外的計算機上運行 ,可以使用Certbot的DNS插件。
這些插件未包含在默認的Certbot安裝中,必須單獨安裝。盡管DNS插件當前無法與一起使用 certbot-auto,但它們在許多OS軟件包管理器中都可以用作Docker映像。訪問https://certbot.eff.org 了解在系統上使用DNS插件的最佳方法。
安裝后,您可以在以下位置找到有關如何使用每個插件的文檔:
- certbot-dns-cloudflare
- certbot-dns-cloudxns
- certbot-dns-digitalocean
- certbot-dns-dnsimple
- certbot-dns-dnsmadeeasy
- certbot-dns-google
- certbot-dns-linode
- certbot-dns-luadns
- certbot-dns-nsone
- certbot-dns-ovh
- certbot-dns-rfc2136
- certbot-dns-route53
Manual
如果您想獲得certbot在目標網絡服務器以外的計算機上運行的證書,或者自己執行域驗證的步驟,則可以使用手動插件。從用戶界面中隱藏后,您可以通過在命令行上指定certonly和使用插件來獲取證書 --manual。這要求您將命令復制并粘貼到另一個終端會話中,該終端會話可能在另一臺計算機上。
手動插件可以使用http或dns挑戰。您可以使用該--preferred-challenges選項來選擇自己喜歡的挑戰。
該http挑戰將要求你把一個文件在一個特定的名稱和具體內容/.well-known/acme-challenge/,直接在頂級目錄(“網根”)目錄中包含您的網絡服務器提供服務的文件。本質上,它與webroot插件相同,但不是自動化的。
使用dns質詢時,certbot將要求您將包含特定內容的TXT DNS記錄放置在域名下,該域名由要為其頒發證書的主機名組成,前綴為_acme-challenge。
例如,對于domain example.com,區域文件條目如下所示:
_acme-challenge.example.com. 300 IN TXT “gfj9Xq…Rg85nM”
另外,您可以使用--manual-auth-hook和--manual-cleanup-hook標志指定腳本來準備進行驗證,執行身份驗證過程和/或在身份驗證之后進行清理。在“hook”部分中對此進行了更深入的描述。
合并插件
有時您可能需要指定不同的Authenticator和Installer插件的組合。要做到這一點,說明與認證插件 --authenticator或-a與安裝插件--installer或 -i。
例如,您可以使用webroot插件進行身份驗證并使用apache插件進行安裝來創建證書。
certbot run -a webroot -i apache -w /var/www/html -d example.com
或者,您可以使用手動插件進行身份驗證并使用nginx插件進行安裝來創建證書。
certbot run -a manual -i nginx -d example.com
第三方插件
其他開發人員也為客戶端提供了許多第三方插件。許多是beta /實驗性的,但有些已經被廣泛使用:
| 插入 | 驗證碼 | 研究所 | 筆記 |
|---|---|---|---|
| haproxy | Y | Y | 與HAProxy負載均衡器集成 |
| s3front | Y | Y | 與S3存儲桶的Amazon CloudFront分發集成 |
| gandi | Y | N | 通過Gandi LiveDNS API獲得證書 |
| varnish | Y | N | 通過Varnish服務器獲取證書 |
| external-auth | Y | Y | 一個方便腳本編寫的插件 |
| pritunl | N | Y | 在pritunl分布式OpenVPN服務器中安裝證書 |
| proxmox | N | Y | 在Proxmox虛擬化服務器中安裝證書 |
| dns-standalone | Y | N | 通過集成的DNS服務器獲取證書 |
| dns-ispconfig | YY | N | 使用ISPConfig作為DNS服務器的DNS身份驗證 |
| dns-clouddns | Y | N | 使用CloudDNS API的DNS身份驗證 |
如果您有興趣,也可以編寫自己的plugin。
Certbot中文文檔
推薦文章: