要在您的 NGINX Web 服務器上啟用安全通信(即 HTTPS),您需要從受信任的證書頒發機構獲取 SSL/TLS 證書。 讓我們加密 是一家提供免費 SSL/TLS 證書的非營利性證書頒發機構。
本教程介紹瞭如何設置由 Let’s Encrypt 頒發的免費 SSL/TLS 證書 Ubuntu 20.04 LTS 服務器運行 nginx.
先決條件:
- 安裝了 Nginx 和託管網站的 Ubuntu 20.04 服務器
在 Ubuntu 上安裝 Certbot
證書機器人 是一種開源工具,可簡化和自動化從 Let’s Encrypt 獲取和更新證書的過程。 我們將使用 Snap 部署系統安裝 Certbot。 Snap 預裝在 Ubuntu 20.04 上。
更新快照
運行以下命令來更新 snapd。
$ sudo snap install core
$ sudo snap refresh core
安裝 certbot snap
接下來,我們準備安裝 Certbot snap。
筆記: 如果您之前使用標準 apt 命令安裝了 Certbot,請先運行以下命令將其刪除。 這將確保 Certbot snap 正常工作。
$ sudo apt-get remove certbot
$ sudo snap install --classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed
啟用 certbot 命令
成功安裝 Certbot snap 後,運行下一個命令啟用 證書機器人 用來。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
獲取您的證書
當您運行下面的命令時,certbot 將指導您完成其餘的過程。 Certbot 還會自動更新您的 NGINX 配置以激活 HTTPS。
$ sudo certbot --nginx
以下是 certbot 將在此過程中提示您執行的操作的摘要。
- 提供一個電子郵件地址,更新和安全通知將發送到
- Enter 是 接受服務條款
- Enter 是 或者 n 接受或拒絕與 Certbot 的開發人員共享您的電子郵件地址
- 確認您要為其啟用 HTTPS 的域名
輸出:
將調試日誌保存到 /var/log/letsencrypt/letsencrypt.log 插件選擇:Authenticator nginx,Installer nginx
Enter 電子郵件地址(用於緊急續訂和安全通知)(Enter ‘c’ 取消):[email protected] – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 請閱讀 https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf 上的服務條款。 您必須同意才能註冊 ACME 服務器。 你同意? – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Y)es/(N)o: y – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 你願意嗎,一旦你的第一個證書成功發行,與電子前沿基金會,Let’s Encrypt 項目的創始合作夥伴和開發 Certbot 的非營利組織分享您的電子郵件地址? 我們想向您發送電子郵件,介紹我們為網絡加密的工作、EFF 新聞、活動以及支持數字自由的方法。 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Y)es/(N)o: n 帳戶已註冊。 您要為哪些名稱激活 HTTPS? – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 1:domain1.com 2:www.domain1 .com – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 選擇適當的數字以逗號分隔,然後/ 或空格,或將輸入留空以選擇顯示的所有選項 (Enter ‘c’ to cancel):為 domain1.com 和 www.domain1.com 申請證書執行以下挑戰: http-01 挑戰 domain1.com http-01 挑戰 www.domain1.com 等待驗證…清理up 挑戰 將證書部署到 VirtualHost /etc/nginx/sites-enabled/domain1 將證書部署到 VirtualHost /etc/nginx/sites-enabled/domain1 將端口 80 上的所有流量重定向到 /etc/nginx/sites-enabled/domain1 中的 ssl 重定向端口 80 上的所有流量到 /etc/nginx/sites-enabled/domain1 中的 ssl – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 恭喜! 您已成功啟用 https://domain1.com 和 https://www.domain1.com – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 重要說明: – 恭喜! 您的證書和鏈已保存在:/etc/letsencrypt/live/domain1.com/fullchain.pem 您的密鑰文件已保存在:/etc/letsencrypt/live/domain1.com/privkey.pem 您的證書將於2021-04-10。 要在將來獲得此證書的新版本或調整版本,只需使用“certonly”選項再次運行 certbot。 要以非交互式方式更新*所有* 的證書,請運行“certbot 更新” – 如果您喜歡 Certbot,請考慮通過以下方式支持我們的工作: 捐贈給 ISRG / Let’s Encrypt:https://letsencrypt.org/donate 捐贈給 EFF: https://eff.org/donate-le
Cerbot 將在 nginx 塊文件中添加以下條目(顯示由 Certbot 管理的句子)。
/etc/nginx/sites-enabled/domain1
$ cat /etc/nginx/sites-enabled/domain1
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {
server_name domain1.com www.domain1.com;
root /var/www/domain1.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name domain1.com www.domain1.com;
return 404; # managed by Certbot
}
$
瀏覽您的網站以確認現在顯示鎖定圖標。
證書更新流程
Let’s Encrypt 頒發的證書有效期為 90 天。 在安裝過程中,certbot 會創建一個計劃任務,以在證書過期之前自動更新您的證書。 只要您不更改 Web 服務器配置,就不必再次運行 certbot。
運行以下命令測試自動續訂過程。
$ sudo certbot renew --dry-run
結論
在本指南中,我們學習瞭如何在 Ubuntu 20.04 上運行的 NGINX Web 服務器上設置讓我們加密 SSL 證書。
除了 Cerbot,您還可以使用 ACME 用於自動頒發和更新 Let’s Encrypt 的免費證書的 Shell 腳本。
如果有任何不清楚的地方,請在下面的評論部分告訴我們。