在之前的教程中,我們描述瞭如何使用 Certbot 從 Let’s Encrypt 獲取免費的 SSL/TLS 證書。
在本教程中,我們想向您展示另一種方法,您可以通過使用 acme.sh Ubuntu 20.04 上的腳本。
如果你還沒有一個可以工作的 NGINX Web 服務器,這裡有一個簡單的 NGINX 安裝指南,你可以遵循。
獲取 acme.sh
這 acme.sh shell 腳本自動發布和更新來自 Let’s Encrypt 的免費證書。 您可以通過直接從 Web 下載或克隆其 git 項目來獲取 acme.sh 腳本。
從網上下載 acme.sh
運行以下兩個命令中的任何一個來下載並執行 acme.sh 腳本。
$ curl https://get.acme.sh | 噓
或者
$ wget -O – https://get.acme.sh | 噓
下面是一個 example 腳本執行時您可以期待什麼。
$ wget -O – https://get.acme.sh | sh –2021-02-16 11:55:47– https://get.acme.sh/ 解析 get.acme.sh (get.acme.sh)… 2606:4700:3032::6815:223e, 2606:4700:3031::ac43:c710, 172.67.199.16, … 連接到 get.acme.sh (get.acme.sh)|2606:4700:3032::6815:223e|:443… 已連接。 HTTP 請求已發送,正在等待響應… 200 OK 長度:未指定 [text/html]
保存到:’標準輸出’
[ <=> ] 937 –.-KB/s in 0s 2021-02-16 11:55:47 (11.8 MB/s) – 寫入標準輸出 [937]
% Total % Received % Xferd 平均速度 時間 時間 當前 Dload 上傳 總花費 剩餘速度 100 204k 100 204k 0 0 3350k 0 –:–:– –:–:– –:–:– 3350k
[Tue 16 Feb 2021 11:55:47 AM UTC] 從在線存檔安裝。
[Tue 16 Feb 2021 11:55:47 AM UTC] 下載 https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] 提取master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] 建議先安裝socat。
[Tue 16 Feb 2021 11:55:47 AM UTC] 如果您使用獨立模式,我們將 socat 用於獨立服務器。
[Tue 16 Feb 2021 11:55:47 AM UTC] 如果您不使用獨立模式,請忽略此警告。
[Tue 16 Feb 2021 11:55:47 AM UTC] 安裝到 /home/shola/.acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] 安裝到 /home/shola/.acme.sh/acme.sh
[Tue 16 Feb 2021 12:05:54 PM UTC] 將別名安裝到“/home/shola/.bashrc”
[Tue 16 Feb 2021 12:05:54 PM UTC] 好的,關閉並重新打開終端以開始使用 acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] 安裝 cron 作業 47 0 * * * “/home/shola/.acme.sh”/acme.sh –cron –home “/home/shola/.acme.sh” > /dev/null
[Tue 16 Feb 2021 11:55:47 AM UTC] 好的, bash 找到了,所以改變shebang來使用 bash 作為首選。
[Tue 16 Feb 2021 11:55:48 AM UTC] 行
[Tue 16 Feb 2021 11:55:48 AM UTC] 安裝成功!
克隆 acme.sh git 項目
或者,每行運行一個下面的命令,以克隆 acme.sh git 項目並執行腳本。
$ git clone https://github.com/acmesh-official/acme.sh.git $ cd acme.sh $ ./acme.sh –install
無論您選擇使用哪種方法,一旦您看到“安裝成功!”消息,你可以 close 終端窗口並再次打開它以驗證安裝。
要查看 acme.sh 使用信息,請運行下一個命令。
$ acme.sh -h
您也可以運行以下命令來檢查 acme.sh 版本。
$ acme.sh –version
生成證書
要為單個域生成單個證書,請運行以下命令。
代替 yourdomain.com 使用您的註冊域名。 另外,更換 /var/www/yourdomain.com 根據需要使用您域的網站根文件夾。
$ acme.sh –issue -d yourdomain.com -w /var/www/yourdomain.com
對於共享同一個網站根文件夾的多個域/子域,您可以運行下一個命令來頒發證書。
$ acme.sh –issue -d yourdomain.com -d www.yourdomain.com -d subdomain.yourdomain.com -w /var/www/yourdomain.com
生成的證書將存儲在 ~/.acme.sh/yourdomain.com
使用 acme 在 NGINX 上安裝證書
通過acme.sh腳本生成證書後,下一步就是在NGINX上安裝。 首先,創建一個文件夾,生成的證書將復製到其中。
$ sudo mkdir -p /etc/nginx/certs/yourdomain.com
運行下一個命令來安裝證書。 不要忘記更換 yourdomain.com 使用您的註冊域名。
$ acme.sh –install-cert -d yourdomain.com –key-file /etc/nginx/certs/yourdomain.com/key.pem –fullchain-file /etc/nginx/certs/yourdomain.com/cert .pem –reloadcmd “服務 nginx 強制重新加載”
更新 NGINX 服務器塊文件
最後一步是更新您的域的服務器塊文件以包含 SSL 相關指令。
運行以下命令來編輯服務器塊文件。
$ sudo nano /etc/nginx/sites-available/yourdomain.com
接下來,添加以下幾行。
聽 [::]:443 ssl ipv6only=on;
聽 443 ssl;
ssl_certificate /etc/nginx/certs/cloudindevs.com/cert.pem;
ssl_certificate_key /etc/nginx/certs/cloudindevs.com/key.pem;
添加後,您的服務器塊文件應如下圖所示。 新增內容以紅色突出顯示。 另外,請注意端口 80 的監聽指令已被註釋掉。
Save 變化和 close 文件。
使用以下命令重新啟動 NGINX:
$ sudo systemctl 重啟 nginx
在瀏覽器中訪問您的網站以確認現在已啟用安全通信。
證書更新
Let’s Encrypt 頒發的證書將每 60 天自動更新一次。
但是,如果您願意,您也可以手動更新證書。 運行下面的命令。
$ acme.sh –renew -d yourdomain.com –force
要停止證書續訂,請運行以下命令。
$ acme.sh –remove -d yourdomain.com
升級 acme.sh
建議始終使用最新版本的 acme.sh。 運行以下命令以確保 acme.sh 自動更新。
$ acme.sh –upgrade –auto-upgrade
要禁用 acme.sh 的自動升級,請運行下一個命令。
$ acme.sh –upgrade –auto-upgrade 0
如果您不希望 acme.sh 自動升級,請使用以下命令手動更新它。
$ acme.sh –upgrade
結論
在本指南中,我們描述了在 Ubuntu 上使用 acme.sh shell 腳本從 Let’s Encrypt 獲取和更新免費 SSL/TLS 證書的步驟。 此方法是使用 Certbot 工具的替代方法。 我們希望了解您使用這些工具的體驗。