最近自己搭建了一個博客網(wǎng)站,我用openssl方式創(chuàng)建了一個免費證書,結果登錄時顯示“不安全”,要寫hosts文件才可以,讓用戶配置不現(xiàn)實。

然后我就換成了Let’s Encrypt 免費證書,成功解決這個不安全的問題。
下面是我操作的完整步驟:
1 為什么不用自簽名證書?
openssl自簽名證書會遇到:
opnessl的自簽名證書適合用在測試或開發(fā)環(huán)境,做網(wǎng)站就不適用。所以我用 Let’s Encrypt 生成免費證書,瀏覽器完全信任,并且可以自動續(xù)期。
2 前提
公網(wǎng)域名已備案:我的是www.ligelinux.com
DNS 已解析:www.ligelinux.com
和 ligelinux.com
都指向你的服務器 IP
Nginx 已安裝,80 端口可訪問。

3 安裝 Certbot
yum install epel-release -y # 啟用 EPEL 源
yum install certbot python3-certbot-nginx -y
CentOS 7.9 默認 EPEL 里的 Certbot 版本較舊,如果 nginx 插件不可用,可用 Webroot 模式。
4 配置 Nginx
因為我用的是CentOS7.9,沒有加載到nginx插件,所以使用webroot方式繞過插件,需要放通80端口測試。
server {
listen 80; # 監(jiān)聽 HTTP 80 端口
server_name www.ligelinux.com ligelinux.com; # 域名綁定
# Let’s Encrypt 驗證路徑
location /.well-known/acme-challenge/ {
root /data/nginx/cert; # 指向 Webroot 臨時目錄
allow all;
}
location / {
return 301 https://$host$request_uri; # 所有 HTTP 請求重定向到 HTTPS
}
}
創(chuàng)建目錄并測試
mkdir -p /data/nginx/cert/.well-known/acme-challenge
echo "test-ok" > /data/nginx/cert/.well-known/acme-challenge/test.txt
訪問:
http://www.ligelinux.com/.well-known/acme-challenge/test.txt
顯示 test-ok
表明路徑正確。
申請 Let’s Encrypt 證書
certbot certonly --webroot -w /data/nginx/cert \
-d www.ligelinux.com -d ligelinux.com
--webroot -w /data/nginx/cert
:指定驗證目錄
-d www.ligelinux.com -d ligelinux.com
:指定需要證書的域名

證書生成后默認存放:
/etc/letsencrypt/live/www.ligelinux.com/fullchain.pem
/etc/letsencrypt/live/www.ligelinux.com/privkey.pem
5 配置HTTPS + 反向代理
server {
listen 443 ssl http2; # 啟用 HTTPS 和 HTTP/2
server_name www.ligelinux.com ligelinux.com;
ssl_certificate /etc/letsencrypt/live/www.ligelinux.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.ligelinux.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://xxxxxx:8090; # 反向代理到后端應用,填寫你的IP地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重載 Nginx:
nginx -t
systemctl restart nginx

然后訪問一下URL,會發(fā)現(xiàn)已經(jīng)顯示安全

6 自動續(xù)簽
Certbot 證書默認是90天過期,但提供自動續(xù)簽功能:
sudo certbot renew --dry-run
sudo certbot renew --deploy-hook "systemctl reload nginx"
- 確保
.well-known/acme-challenge/
目錄保持可訪問,否則續(xù)簽會失敗。

7 小技巧總結
- 訪問域名:必須通過
www.ligelinux.com
或 ligelinux.com
,直接訪問 IP 不安全 - 瀏覽器緩存:首次啟用 HTTPS,可清理瀏覽器緩存
- 自動續(xù)簽:使用 Certbot timer 或 cron 保證證書永不過期
- 多域名/子域名:可以在申請時
-d sub.example.com
一次性添加
閱讀原文:原文鏈接
該文章在 2025/8/29 11:34:28 編輯過