终极指南:acme-companion证书存储方案从文件系统到云密钥管理
【免费下载链接】acme-companionAutomated ACME SSL certificate generation for nginx-proxy项目地址: https://gitcode.com/gh_mirrors/ac/acme-companion
acme-companion是一款为nginx-proxy提供自动化ACME SSL证书生成的工具,它能够帮助用户轻松管理SSL证书,实现证书的自动申请、续期和存储,为网站安全保驾护航。
一、acme-companion证书存储基础:文件系统方案
1.1 默认存储路径解析
acme-companion默认将SSL证书存储在/etc/nginx/certs目录下。在app/entrypoint.sh脚本中可以看到相关配置,该目录是证书存储的核心位置,所有生成的证书和密钥文件都会保存在这里。
1.2 持久化存储配置方法
为了确保证书在容器重启或重新创建后不丢失,acme-companion提供了多种持久化存储方案。
1.2.1 命名卷(推荐)
按照官方文档docs/Persistent-data.md的指导,使用命名卷是推荐的方式。通过以下命令创建容器时指定命名卷:
$ docker run -d \ --name nginx-proxy \ -p 80:80 \ -p 443:443 \ -v certs:/etc/nginx/certs \ -v html:/usr/share/nginx/html \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ nginxproxy/nginx-proxy这样Docker会自动创建名为certs的命名卷,即使删除并重新创建容器,只要指定该命名卷,证书数据就能得以保留。
1.2.2 主机卷
如果希望将证书存储在本地文件夹,可使用主机卷,将主机的绝对路径绑定到容器的/etc/nginx/certs目录:-v /path/to/certificates:/etc/nginx/certs
二、acme-companion工作流程与证书存储关系
acme-companion的工作流程与证书存储紧密相关,下面通过架构图来了解其工作机制:
从图中可以看出,Nginx ReverseProxy接收请求,acme-companion(即图中的nginx-letsencrypt)与Let's Encrypt交互获取证书,然后将证书存储在指定路径,供Nginx使用。当有新的Docker实例被检测到时,docker-gen会更新Nginx配置,确保新的证书能被正确应用。
三、证书存储的高级配置与管理
3.1 证书有效期检查
在app/functions.sh中,有检查证书有效期的函数。例如:
local cert_path="$1" cert_expiration="$(openssl x509 -noout -enddate -in "$cert_path" | cut -d "=" -f 2)"该函数通过解析证书的结束日期来判断证书是否需要续期,保障证书始终处于有效状态。
3.2 自定义存储路径探索
虽然默认存储路径是/etc/nginx/certs,但用户可以通过修改相关配置文件来自定义存储路径。不过需要注意的是,修改路径后要确保相关组件(如Nginx、docker-gen等)能正确访问到证书文件。
四、迈向云密钥管理:未来趋势
随着云技术的发展,将证书存储在云密钥管理服务中成为一种趋势。虽然目前acme-companion主要基于文件系统存储证书,但用户可以结合云平台提供的密钥管理服务,通过编写自定义脚本或钩子(可参考docs/Hooks.md),在证书生成或更新后将其上传到云密钥管理服务,实现更安全、更便捷的证书管理。
五、总结
acme-companion提供了从基础的文件系统存储到可扩展的云密钥管理的证书存储方案。用户可以根据自己的需求选择合适的存储方式,无论是简单的命名卷、主机卷,还是未来的云密钥管理,都能保障SSL证书的安全存储和有效管理,为网站的HTTPS服务提供稳定可靠的支持。
【免费下载链接】acme-companionAutomated ACME SSL certificate generation for nginx-proxy项目地址: https://gitcode.com/gh_mirrors/ac/acme-companion
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考