探索

Nginx + Let’s Encrypt 实现免费证书!网站不再提示“不安全”!

字号+作者:益华科技来源:应用开发2025-11-04 21:53:24我要评论(0)

最近自己搭建了一个博客网站,我用openssl方式创建了一个免费证书,结果登录时显示“不安全”,要写hosts文件才可以,让用户配置不现实。然后我就换成了Let’s Encrypt 免费证书,成功解决

最近自己搭建了一个博客网站,不安全我用openssl方式创建了一个免费证书,实现结果登录时显示“不安全”,免费要写hosts文件才可以,证书让用户配置不现实。网站

然后我就换成了Let’s Encrypt 免费证书,不再成功解决这个不安全的提示问题。

下面是不安全我操作的完整步骤:

1. 为什么不用自签名证书?

openssl自签名证书会遇到:

浏览器仍然提示“不安全”每台客户端都需要手动信任无法自动续期

opnessl的自签名证书适合用在测试或开发环境,做网站就不适用。实现所以我用 Let’s Encrypt 生成免费证书,免费浏览器完全信任,云服务器提供商证书并且可以自动续期。网站

2. 前提

公网域名已备案:我的不再是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 -y1.2.

CentOS 7.9 默认 EPEL 里的不安全 Certbot 版本较旧,如果 nginx 插件不可用,可用 Webroot 模式。

4. 配置 Nginx

因为我用的是CentOS7.9,没有加载到nginx插件,源码库所以使用webroot方式绕过插件,需要放通80端口测试。

复制server { listen 80; # 监听 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 } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.

创建目录并测试:

复制mkdir -p /data/nginx/cert/.well-known/acme-challenge echo "test-ok" > /data/nginx/cert/.well-known/acme-challenge/test.txt1.2.

访问:

复制http://www.ligelinux.com/.well-known/acme-challenge/test.txt1.

显示 test-ok 表明路径正确。

申请 Let’s Encrypt 证书:

复制certbot certonly --webroot -w /data/nginx/cert \ -d www.ligelinux.com -d ligelinux.com1.2. --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.pem1.2. 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; } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.

重载 Nginx:

复制nginx -t systemctl restart nginx1.2.

然后访问一下URL,会发现已经显示安全:

6. 自动续签

Certbot 证书默认是90天过期,但提供自动续签功能:

复制sudo certbot renew --dry-run1.

--dry-run 模拟续签。

可添加 Nginx 自动重载:

复制sudo certbot renew --deploy-hook "systemctl reload nginx"1.

确保 .well-known/acme-challenge/ 目录保持可访问,否则续签会失败。

7. 小技巧总结访问域名:必须通过 www.ligelinux.com 或 ligelinux.com,直接访问 IP 不安全浏览器缓存:首次启用 HTTPS,可清理浏览器缓存自动续签:使用 Certbot timer 或 cron 保证证书永不过期多域名/子域名:可以在申请时 -d sub.example.com 一次性添加IT技术网

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 用电脑做系统XP教程光盘,轻松学习配置系统(自学成才,操作简单,教程详细易懂)

    用电脑做系统XP教程光盘,轻松学习配置系统(自学成才,操作简单,教程详细易懂)

    2025-11-04 21:14

  • Windows下编译MySQL数据库的过程详解

    Windows下编译MySQL数据库的过程详解

    2025-11-04 20:21

  • SQL Server数据库的设计规范简介

    SQL Server数据库的设计规范简介

    2025-11-04 19:45

  • IT安全风险管理优秀实践

    IT安全风险管理优秀实践

    2025-11-04 19:45

网友点评