⭐ 推荐:社区规则条款 V1.0

多台服务器共用一张SSL证书怎么部署和同步?

liulian
liulian 初级会员萌新站长
发布于 2026-10-29 01:10 ·13 浏览 ·0 回复

多台服务器共用一张SSL证书,最推荐使用Nginx共享证书目录或Let's Encrypt的DNS API自动更新方案,这比手动复制证书更安全可靠。

怎么通过共享目录实现Nginx证书同步?

结论:在所有服务器上挂载同一个NFS共享目录或使用本地挂载,配置Nginx读取该目录下的证书文件。

这是最传统且简单的方案。假设你有一台主服务器(Server A)负责生成证书,其他服务器(Server B、Server C)作为客户端挂载该证书目录。

  1. 准备证书: 在Server A上使用Let's Encrypt或OpenSSL生成证书文件(通常包括fullchain.pem和privkey.pem),并修改文件权限为644,所有者为nginx运行用户(如www-data)。
  2. 配置NFS挂载: 在Server B和Server C上安装nfs-common工具,通过编辑/etc/fstab挂载Server A的证书目录。
    # /etc/fstab 示例
    server_a_ip:/data/ssl /etc/nginx/ssl nfs defaults 0 0
    
  1. 修改Nginx配置: 所有服务器的nginx配置文件中,ssl_certificate路径必须指向同一个挂载点。
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    
  1. 重启服务: 修改配置后执行systemctl reload nginx使配置生效。

怎么用DNS API自动更新证书?

结论:利用Let's Encrypt的DNS验证插件,在DNS服务商处配置API凭证,实现证书自动续期和分发。

如果服务器之间网络不通,无法使用共享目录方案,DNS API是最佳选择。它利用DNS TXT记录进行验证,不依赖服务器间的网络互通。

  1. 安装Certbot插件: 在所有服务器上安装Certbot及其对应DNS服务商的插件(如certbot-dns-cloudflare)。
  2. 配置API凭证: 创建一个包含API Token的INI文件(如/root/.secrets/certbot.ini),设置权限为600。
    dns_cloudflare_api_token = your_api_token_here
    
  1. 配置续期脚本: 编辑crontab,设置每天凌晨3点检查证书是否过期。
    0 3 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"
    

注意:--deploy-hook参数会在证书成功更新后自动执行,确保所有服务器上的nginx同步加载了新证书。

手动同步证书有哪些风险和注意事项?

结论:手动复制证书存在严重的安全风险,必须确保证书文件权限正确且同步时间点一致。

手动通过SCP或FTP复制证书文件是最容易出错的环节,建议尽量避免。

  1. 权限陷阱: 如果证书文件权限设置为777,nginx将拒绝加载,导致网站502错误。必须严格执行chmod 644和chown nginx:nginx。
  2. 版本一致性: 如果A服务器已更新证书,而B服务器还在使用旧证书,会导致证书链验证失败。建议编写简单的Shell脚本,利用diff命令对比服务器上的证书文件MD5值,如果不一致则自动同步。
    # 简单的同步脚本示例
    md5sum /etc/nginx/ssl/*.pem > /tmp/certs.md5
    scp /tmp/certs.md5 user@server_b:/tmp/
    ssh user@server_b "md5sum -c /tmp/certs.md5"
    
  1. 安全建议: 绝对不要将私钥文件(privkey.pem)上传到公共代码仓库或分享给他人,私钥泄露等同于网站被劫持。

总结

多台服务器部署SSL证书的核心在于“自动化”和“一致性”。无论是通过NFS共享目录还是DNS API,其目的都是为了防止因证书过期或版本不一致导致的服务中断。建议优先选择Let's Encrypt配合DNS API的方式,既安全又免去了维护共享存储的麻烦。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2682.html
转载请注明出处,版权归原作者所有。
他们都看过 1 人浏览过
GJ论坛站长

全部回复 0

还没有回复,来抢沙发~