上期發布的《搭建Nginx反向代理服務器》反響還不錯,在該文章中介紹的是HTTP,為了進一步提高安全,本期介紹如何申請免費的SSL證書,實現HTTPS。Let's Encrypt是一個免費的、自動化的、開放的證書頒發機構,也是本期的主角。
4、該服務器開放80/443端口用于Let's Encrypt驗證
1、Certbot是Let's Encrypt官方推薦的自動化申請工具,支持多種Linux發行版,這里使用Ubuntu版本。sudo apt update
sudo apt install certbot python3-certbot-nginx -y
通配符證書必須通過DNS驗證方式申請,因為Let's Encrypt需要驗證您對域名的控制權。1、執行以下命令開始申請通配符證書,執行完之后不要點擊Enter鍵,要等確定TXT記錄生效之后才能點擊Enter鍵:sudo certbot certonly --manual --preferred-challenges=dns \ --server https://acme-v02.api.letsencrypt.org/directory \ --agree-tos -m your-email@example.com \ -d '*.simple.com' -d simple.com
參數說明:
--manual:使用手動交互模式獲取證書
--preferred-challenges=dns:指定DNS方式驗證,使用DNS TXT記錄進行驗證
-d '*.simple.com':通配符域名,覆蓋所有一級子域名
-d simple.com:同時包含主域名(可選)
--agree-tos:同意Let's Encrypt服務條款
-m your-email@example.com:您的郵箱地址,用于安全提醒和續期通知
2、登錄域名控制臺,按照控制臺輸出的信息,添加TXT記錄
使用nslookupnslookup -type=txt _acme-challenge.simple.com
當命令返回的結果中包含您設置的TXT記錄值時,說明DNS記錄已生效。此時返回Certbot交互窗口,按回車鍵繼續。4、成功之后,會讓你新建第二條TXT記錄,域名與第一條一樣,但是內容不同,注意要保存第一條TXT記錄,不要刪除了5、登錄域名控制臺,按照控制臺輸出的信息,添加第二條TXT記錄使用nslookupnslookup -type=txt _acme-challenge.simple.com
當命令返回的結果中包含您設置的兩條TXT記錄值時,說明DNS記錄已生效。此時返回Certbot交互窗口,按回車鍵繼續。7、DNS驗證通過后,Certbot將自動生成證書文件。成功后會顯示類似以下信息:1、Certbot默認會安裝自動續期服務,您可以通過以下命令驗證sudo systemctl status certbot.timer
sudo systemctl list-timers | grep certbot
sudo crontab -e0 0 1 * * /usr/bin/certbot renew --quiet
為確保證書更新后Nginx能立即使用新證書,可以修改certbot服務配置sudo vim /usr/lib/systemd/system/certbot.service
ExecStart=/usr/bin/certbot -q renew --deploy-hook "/usr/sbin/nginx -s reload"
通配符證書*.simple.com僅支持一級子域名(如oa.simple.com),無法覆蓋dev.oa.simple.com這樣的多級子域名為多級子域名單獨申請證書或使用*.oa.simple.com
閱讀原文:https://mp.weixin.qq.com/s/-3OqyeHrbuG72k39wUsuFw
該文章在 2026/3/18 10:51:57 編輯過