灵易深论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6|回复: 0

nmp环境自动更新ssl证书

[复制链接]

101

主题

29

回帖

302

积分

超级版主

积分
302
发表于 2025-4-27 17:28:22 | 显示全部楼层 |阅读模式
nginx+php+mysql 部署的网站,https 端口为1443,html接口是8080,如何部署自动更新ssl证书










ChatGPT 说:
在 Nginx + PHP + MySQL 部署的网站中,使用 HTTPS(端口 1443)并且 HTML 接口在 8080 端口上时,自动更新 SSL 证书通常需要使用 Let's Encrypt 的免费证书,并结合 [url=]Certbot[/url] 工具进行自动更新。
步骤概述:
  • 安装 Certbot 和 Nginx 插件
  • 使用 Certbot 申请 SSL 证书
  • 配置 Nginx
  • 配置自动更新

1. 安装 Certbot 和 Nginx 插件
首先,确保你的服务器上安装了 Certbot 和 Nginx 插件。执行以下命令来安装:
bash
复制编辑


# 更新系统包索引sudo apt update# 安装 Certbot 和 Nginx 插件sudo apt install certbot python3-certbot-nginx

2. 使用 Certbot 申请 SSL 证书
执行以下命令以申请 SSL 证书:
bash
复制编辑


sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

  • yourdomain.com 和 www.yourdomain.com 替换为你的实际域名。
  • Certbot 会自动检测并配置你的 Nginx 配置文件,申请并安装证书。

Certbot 会提示你选择是否强制使用 HTTPS(重定向 HTTP 到 HTTPS),选择 Yes 即可。
3. 配置 Nginx
确保 Nginx 配置正确地使用了 SSL 证书。你需要在 Nginx 配置文件中设置 HTTPS 端口(1443),同时确保 HTTP 端口(8080)也配置正确。
你的 /etc/nginx/conf.d/web.conf 配置可能如下所示:
nginx
复制编辑


server {    listen 1443 ssl;    server_name yourdomain.com www.yourdomain.com;    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;    # 其它SSL相关配置...    ssl_protocols TLSv1.2 TLSv1.3;    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';    ssl_prefer_server_ciphers on;    root /data/lesrec;    index index.html index.htm index.php;        # 其它配置...    # 强制 HTTP -> HTTPS 重定向(如果需要)    location / {        try_files $uri $uri/ /index.php?$args;    }    location ~ \.php$ {        include snippets/fastcgi-php.conf;        fastcgi_pass unix:/run/php/php7.4-fpm.sock;        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;        include fastcgi_params;    }}server {    listen 8080;    server_name yourdomain.com;    root /data/lesrec;    index index.html index.htm;    # 配置 HTTP(仅限用于 HTML 接口)    location / {        try_files $uri $uri/ =404;    }}

4. 配置自动更新 SSL 证书
Let's Encrypt 的证书有效期为 90 天,因此你需要配置自动更新。Certbot 提供了一个定时任务来自动更新证书。
  • 你可以编辑 crontab 来设置定时更新任务:

bash
复制编辑


sudo crontab -e

添加以下行来每天检查证书是否需要更新,并自动重新加载 Nginx:
bash
复制编辑


0 3 * * * certbot renew --quiet && systemctl reload nginx

  • 上述设置会在每天的凌晨 3 点执行证书更新检查。
  • 如果证书即将过期,Certbot 会自动续期并重启 Nginx 使新证书生效。

验证 SSL 自动更新
为了确保自动更新正常工作,可以手动测试证书更新:
bash
复制编辑


sudo certbot renew --dry-run

如果一切正常,你会看到一个“干运行”测试通过的信息,表示 Certbot 可以正常更新证书。
总结
  • 安装 Certbot 和 Nginx 插件来自动申请和更新 SSL 证书。
  • 配置 Nginx 使用 SSL 证书。
  • 使用 Cron 定时任务来自动更新 SSL 证书并重新加载 Nginx。

这样,你就可以确保 SSL 证书会自动更新,并且 Nginx 会在证书更新后自动重新加载新证书。









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|灵易深论坛 ( 沪ICP备2020036158号-2 )

GMT+8, 2025-6-21 21:45 , Processed in 0.014986 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表