Certbot 系統要求
關于Certbot
Certbot通常由系統管理員直接在Web服務器上運行。在大多數情況下,在個人計算機上運行Certbot并不是有用的選擇。以下說明與在服務器上安裝和運行Certbot有關。
系統管理員可以直接使用Certbot來請求證書;他們應該不會允許非特權用戶運行任意Certbot命令的root,因為Certbot允許其用戶指定的任意文件位置和運行任意的腳本。
Certbot被打包用于許多常見的操作系統和Web服務器。通過訪問certbot.eff.org檢查是否為您的Web服務器的操作系統打包了certbot(或letsencrypt) ,在這里您還將找到針對系統的正確安裝說明。
注意
除非您有非常特殊的要求,否則我們建議您使用軟件包管理器提供的Certbot軟件包。如果沒有此類軟件包,我們建議使用certbot-auto,它可以自動在您的系統上安裝Certbot。
系統要求
Certbot當前需要在類似UNIX的操作系統上運行Python 2.7或3.5+。默認情況下,它需要以寫root訪問權限 /etc/letsencrypt,/var/log/letsencrypt,/var/lib/letsencrypt,綁定到端口80(如果使用standalone插件),并讀取和修改Web服務器配置(如果使用apache或nginx 插件)。如果這些都不適合您,則理論上可以在沒有root特權的情況下運行,但是對于大多數希望避免以root身份運行ACME客戶端的用戶,letencrypt-nosudo或simp_le是更合適的選擇。
Apache插件當前需要具有augeas 1.0版的操作系統;當前,它支持基于Debian,Ubuntu,Fedora,SUSE,Gentoo和Darwin的現代操作系統。
certbot-auto腳本的其他完整性驗證可以通過驗證其數字簽名來完成。這需要本地安裝gpg2,該軟件包已打包在許多Linux發行版中,名稱為gnupg或gnupg2。
使用進行安裝certbot-auto需要512MB的RAM才能構建某些依賴項。從預構建的OS軟件包安裝可以避免此要求。您也可以臨時設置交換文件。有關詳細信息,請參見下面的“ Python虛擬環境問題”。
備用安裝方法
如果您離線或操作系統未提供軟件包,則可以使用另一種安裝方法certbot。
Snap
大多數現代Linux發行版(基本上是使用systemd的任何發行版)都可以安裝打包成一個單元的Certbot。目前對Certbot snap的支持處于測試階段,并且僅限于x86_64體系結構,但是它提供了一種簡便的方法來確保您具有最新版本的Certbot,并具有預先配置的自動證書更新等功能。
通過選擇服務器軟件,然后在“System”下拉菜單中選擇“snapd”,可以在https://certbot.eff.org/instructions 上找到有關安裝Certbot快照的說明。(無論您使用哪種操作系統,都應選擇“snapd”)
Certbot-Auto
該certbot-auto包裝腳本安裝Certbot,從您的網絡服務器操作系統獲取一些依賴,并把他人在Python虛擬環境。您可以按以下方式下載并運行它:
wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto
/usr/local/bin/certbot-auto --help
要刪除certbot-auto,只需將其及其放在/opt/eff.org下的文件以及可能創建的任何cronjob或systemd計時器刪除。
要檢查certbot-auto腳本的完整性,可以使用以下步驟:
user@webserver:~$ wget -N https://dl.eff.org/certbot-auto.asc
user@webserver:~$ gpg2 --keyserver pool.sks-keyservers.net --recv-key A2CFB51FA275A7286234E7B24D17C995CD9775F2
user@webserver:~$ gpg2 --trusted-key 4D17C995CD9775F2 --verify certbot-auto.asc /usr/local/bin/certbot-auto
最后一條命令的輸出應類似于:
gpg: Signature made Wed 02 May 2018 05:29:12 AM IST
gpg: using RSA key A2CFB51FA275A7286234E7B24D17C995CD9775F2
gpg: key 4D17C995CD9775F2 marked as ultimately trusted
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 2 signed: 2 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1 valid: 2 signed: 0 trust: 2-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2027-11-22
gpg: Good signature from "Let's Encrypt Client Team <letsencrypt-client@eff.org>" [ultimate]
該certbot-auto命令將自動更新為最新的客戶端版本。由于certbot-auto是的包裝器certbot,因此它接受完全相同的命令行標志和參數。
要獲得完整的命令行幫助,您可以輸入:
/usr/local/bin/certbot-auto --help all
Python虛擬環境的問題
在內存少于512MB的低內存系統(例如VPS)上,將無法建立所需的Certbot依賴項。如果pip輸出中包含類似的內容,則可以識別出此信息。您可以通過創建臨時交換文件來解決此限制:internal compiler error: Killed (program cc1)
user@webserver:~$ sudo fallocate -l 1G /tmp/swapfile
user@webserver:~$ sudo chmod 600 /tmp/swapfile
user@webserver:~$ sudo mkswap /tmp/swapfile
user@webserver:~$ sudo swapon /tmp/swapfile
構建虛擬環境后,禁用并刪除交換文件:
user@webserver:~$ sudo swapoff /tmp/swapfile
user@webserver:~$ sudo rm /tmp/swapfile
使用Docker運行
Docker是一種非常簡單快捷的獲取證書的方法。但是,此操作模式無法安裝證書或配置您的Web服務器,因為我們的安裝程序插件無法從Docker容器內部訪問您的Web服務器。
大多數用戶應使用操作系統軟件包,或作為備用certbot-auto。僅當您確定知道自己在做什么并且有充分的理由這樣做時,才應使用Docker。
我們的密碼套件頁面提供了有關推薦密碼套件的一些信息。如果這些都不適合您,則絕對應該使用certbot-auto方法,該方法使您能夠使用涵蓋這兩個主題的安裝程序插件。
如果您仍然不確定并決定使用此方法,請從服務器上將您要申請認證的域解析為該服務器,然后安裝Docker,然后發出類似于以下命令的命令。如果您將Certbot與Standalone插件一起使用,則需要通過在之前或在命令行中添加類似的內容來使其可以從容器外部訪問其使用的端口。-p 80:80``-p 443:443``certbot/certbot
sudo docker run -it --rm --name certbot
-v "/etc/letsencrypt:/etc/letsencrypt"
-v "/var/lib/letsencrypt:/var/lib/letsencrypt"
certbot/certbot certonly
使用certonly命令運行Certbot 將獲得證書并將其放置在/etc/letsencrypt/live系統上的目錄中 。由于Certonly無法從Docker中安裝證書,因此您必須根據Web服務器提供商建議的過程手動安裝證書。
https://hub.docker.com/u/certbot上還提供了每個Certbot的DNS插件的Docker映像,這些映像可自動為受歡迎的提供商進行DNS域名驗證。要使用一個圖像,只需certbot/certbot在上面的命令中替換 為您要使用的圖像名稱即可。例如,要將Certbot的插件用于Amazon Route 53,則可以使用certbot/dns-route53。您可能還需要向Certbot添加標志和/或掛載其他目錄以提供對DNS API憑據的訪問,如DNS插件文檔中所指定。如果您想從Let’s Encrypt的ACMEv2服務器上獲取通配符證書,則還需要在命令行中包含通配符證書。--server https://acme-v02.api.letsencrypt.org/directory
操作系統軟件包
Arch Linux
sudo pacman -S certbot
Debian
如果您運行Debian Buster或Debian testing / Sid,則可以通過以下命令輕松安裝certbot軟件包:
sudo apt-get update
sudo apt-get install certbot
如果您運行Debian Stretch,我們建議您使用Debian backports倉庫中的軟件包。首先,您必須按照https://backports.debian.org/Instructions/上的說明進行操作, 以啟用Stretch backports存儲庫(如果尚未啟用)。然后運行:
sudo apt-get install certbot -t stretch-backports
在所有這些情況下,還可以使用軟件包來幫助Certbot與Apache,nginx或各種DNS服務集成。如果您使用的是Apache或nginx,我們強烈建議您安裝python-certbot-apache或 python-certbot-nginx軟件包,以便Certbot可以完全自動化服務器的HTTPS配置。這些軟件包的完整列表可以通過以下命令找到:
apt search 'python-certbot*'
可以通過運行上面相同的安裝命令來安裝它們,但用certbot所需軟件包的名稱代替。
Debian Jessie沒有可用的Certbot軟件包,Jessie用戶應該使用certbot-auto。
Ubuntu
如果您運行Ubuntu Trusty,Xenial或Bionic,則可通過官方PPA獲得certbot,可以按以下方式安裝:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
然后,可以使用以下命令安裝certbot:
sudo apt-get install certbot
(可選)要安裝Certbot Apache插件,可以使用:
sudo apt-get install python-certbot-apache
Fedora
sudo dnf install certbot python2-certbot-apache
FreeBSD
- Port:
cd /usr/ports/security/py-certbot && make install clean- Package:
pkg install py27-certbot
Gentoo
Gentoo Portage中提供了Certbot的官方客戶端。如果要使用Apache插件,則必須單獨安裝:
emerge -av app-crypt/certbot
emerge -av app-crypt/certbot-apache
如果使用默認的Gentoo,則在使用Apache插件時,將遇到“找不到SSLCertificateFile指令”或“找不到證書的SSLCertificateKeyFile指令”錯誤 httpd.conf。您可以通過注釋掉以下兩行來解決此問題 /etc/apache2/httpd.conf:
替換部分
<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
</IfDefine>
用此部分替換上面
#<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
#</IfDefine>
目前,這是Apache插件在安裝證書時識別適當指令的唯一方法。注意:其他插件不需要此更改。
NetBSD
- 從源代碼構建:
cd /usr/pkgsrc/security/py-certbot && make install clean- 安裝預編譯的軟件包:
pkg_add py27-certbot
OpenBSD
- Port:
cd /usr/ports/security/letsencrypt/client && make install clean- Package:
pkg_add letsencrypt
警告
請不要嘗試安裝命令作為超級用戶/根和/或不虛擬的環境中,這些操作模式可能會損壞您的操作系統,Certbot團隊不支持!python certbot/setup.py install``python pip install certbot``easy_install certbot``sudo python certbot/setup.py install``sudo pip install``sudo ./venv/bin/...
Certbot中文文檔
推薦文章: