安裝acme.sh
證書的生成有許多方法,這里使用的是比較簡單的方法:使用 acme.sh 腳本生成。
注意:針對debian9系統,在執行安裝acme.sh腳本之前,需要提前安裝必備軟件包。不然會有提示"It is recommended to install socat first"等錯誤信息提示。
必備軟件包安裝執行命令:
apt-get update && apt-get install curl -y && apt-get install cron -y && apt-get install socat -y
CentOS用yum install socat安裝必備軟件包。
安裝 acme.sh
執行以下命令:
curl https://get.acme.sh | sh
安裝成功后執行 以下命令,.bashrc需要用ls -a才能看到,以確保腳本所設置的命令別名生效:
source ~/.bashrc
執行成功后不會有回應,如果安裝報錯,那么可能是因為系統缺少 acme.sh 所需要的依賴項,acme.sh 的依賴項主要是 netcat(nc),我們通過以下命令來安裝這些依賴項,然后重新安裝一遍 acme.sh:(注:debian9在安裝過程中沒有報錯,所以這步不需要執行)
apt-get -y install netcat
以下的命令會臨時監聽 80 端口,而80端口被Ngnix服務占用,所以要暫停Ngnix服務:
systemctl stop nginx
###或者
/usr/local/nginx/sbin/nginx -s stop
生成證書
注意:腳本中的域名mydomain.me改成自己的
~/.acme.sh/acme.sh --issue -d mydomain.me --standalone -k ec-256
安裝成功后提示生成的秘鑰證書的路徑,證書路徑是自動生成的。
如果出現No valid IP addresses,說明這個域名未被使用,要先將域名綁定IP。
如果出現Create new order error. Le_OrderFinalize not found,則說明失敗太多次,要一小時后再試。
Invalid response from說明域名綁定的並不是本機IP。
Error getting validation data,獲取不到驗證數據是因為防火牆沒關。
安裝證書和密鑰(ECC和RSA二選一)
ECC優點:同等長度 ECC 比 RSA 更安全 ECC缺點:兼容性會差一些
只要設備不是非常老的老古董,建議使用 ECC 證書。
ECC 證書將證書和密鑰安裝到 /etc/crt 中執行:(注意:腳本中的域名改成自己的,/etc/crt路徑可以自己制定)
$ sudo ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/crt/autumn.crt --keypath /etc/crt/autumn.key --ecc
RSA 證書執行:(/etc/crt路徑可以自己制定)
$ sudo ~/.acme.sh/acme.sh --installcert -d mydomain.me --fullchainpath /etc/crt/autumn.crt --keypath /etc/crt/autumn.key
注意:無論什么情況,密鑰(即上面的.key)都不能泄漏,如果你不幸泄漏了密鑰,可以使用 acme.sh 將原證書吊銷,再生成新的證書,吊銷方法請自行參考 acme.sh 的手冊。
安裝成功如下圖:
證書更新(腳本自動)
由於 Let's Encrypt 的證書有效期只有 3 個月,因此需要 90 天至少要更新一次證書,acme.sh 腳本會每 60 天自動更新證書。所以這步不需要做。(但如果你不放心,也把手動更新的指令提供一下,供參考。)
手動更新 ECC 證書,執行:
~/.acme.sh/acme.sh --renew -d mydomain.com --force --ecc
如果是 RSA 證書則執行:
sudo ~/.acme.sh/acme.sh --renew -d mydomain.com --force