容器化freessl-acme.sh更新nginx实现https证书自动续期:修订间差异
小无编辑摘要 |
小无编辑摘要 |
||
第4行: | 第4行: | ||
acme.sh官方其实有做好的docker images,但是由于太闲了所以又重新写了一份(班门弄斧) | acme.sh官方其实有做好的docker images,但是由于太闲了所以又重新写了一份(班门弄斧) | ||
=== | === 正题1: 制作能自签域名证书的镜像 === | ||
先构建一个带有 acme.sh 基础镜像 | 先构建一个带有 acme.sh 基础镜像 | ||
cat <<\EOF > acme.sh.Dockerfile | cat <<\EOF > acme.sh.Dockerfile | ||
第22行: | 第22行: | ||
获取token (即****/directory/ 后的字符串) | 获取token (即****/directory/ 后的字符串) | ||
接着根据实际需求构建域名专属acme镜像用于签发证书,安装证书以及触发 容器化或者节点直接部署运行的nginx reload( | 接着根据实际需求构建域名专属acme镜像用于签发证书,安装证书以及触发 容器化或者节点直接部署运行的nginx reload(后面按需修改该容器pid mode和reloadcmd即可) | ||
这里 <code>--issue</code> 命令中由于没有带--days参数,所以默认签的是60天的证书 | |||
将下述内容按需修改存于Dockerfile中 | |||
FROM san3xian/freessl_acme.sh:v2 | FROM san3xian/freessl_acme.sh:v2 | ||
第34行: | 第38行: | ||
--fullchain-file /certs/${acme_domain}_cert.pem \ | --fullchain-file /certs/${acme_domain}_cert.pem \ | ||
--reloadcmd "/bin/kill -s HUP 1" | --reloadcmd "/bin/kill -s HUP 1" | ||
使用docker build构建镜像 | |||
docker build -t san3xian/freessl_acme.sh:yourdomain . | |||
如果上述步骤都没错的话,在构建这个带有域名证书信息的镜像的时候,就能看到申请下来的证书会被打印输出到控制台 | |||
并且根据回显内容可知,申请下来的证书保存在了 <code>/root/.acme.sh/${acme_domain}/</code> 路径下,而且证书会被拷贝一份到 <code>/certs</code> 路径下(此路径按实际需求在Dockerfile中修改即可) | |||
在freessl.cn的acme页面中也能看到相应的客户端ID信息 | |||
到这里acme.sh自动签证书的步骤就已经基本做完了acme.sh配置参考: https://blog.freessl.cn/acme-quick-start/ | |||
=== 正题2: 适配实际的tls证书使用环境 === | |||
如前所述,本文是为了用容器化的freessl acme.sh向容器化的nginx进行证书自签,所以下面还会有docker-compose的内容 | |||
<nowiki>#</nowiki> | <nowiki>#</nowiki> ToDo | ||
[[分类:Todo]] | [[分类:Todo]] | ||
[[分类:Linux]] | [[分类:Linux]] |
2022年4月5日 (二) 01:12的版本
赘述
由于有一定的OS环境洁癖,所以不打算直接在Linux OS环境中直接安装acme.sh,采用容器化的方式安装acme.sh
acme.sh官方其实有做好的docker images,但是由于太闲了所以又重新写了一份(班门弄斧)
正题1: 制作能自签域名证书的镜像
先构建一个带有 acme.sh 基础镜像
cat <<\EOF > acme.sh.Dockerfile FROM alpine:3.15.3 RUN apk --no-cache add curl wget openssl && \ rm -rf /var/cache/apk && \ curl -s https://get.acme.sh | sh -s [email protected] WORKDIR /root/.acme.sh ENTRYPOINT ["/usr/sbin/crond", "-f", "-S","/dev/stdout"] EOF
docker build -f acme.sh.Dockerfile -t san3xian/freessl_acme.sh:v2 .
然后到https://freessl.cn/acme-deploy 注册登陆
并在该站点的 acme页面中添加域名,完成域名的DCV预检测(即配置CNAME,域名解析状态可以在这里查询: https://myssl.com/dns_check.html)
获取token (即****/directory/ 后的字符串)
接着根据实际需求构建域名专属acme镜像用于签发证书,安装证书以及触发 容器化或者节点直接部署运行的nginx reload(后面按需修改该容器pid mode和reloadcmd即可)
这里 --issue
命令中由于没有带--days参数,所以默认签的是60天的证书
将下述内容按需修改存于Dockerfile中
FROM san3xian/freessl_acme.sh:v2 ARG acme_token="your_token" \ acme_domain="your_domain" RUN /root/.acme.sh/acme.sh --issue -d ${acme_domain} --dns dns_dp \ --server https://acme.freessl.cn/v2/DV90/directory/${acme_token} && \ mkdir -pv /certs && \ /root/.acme.sh/acme.sh --install-cert -d ${acme_domain} \ --key-file /certs/${acme_domain}_key.pem \ --fullchain-file /certs/${acme_domain}_cert.pem \ --reloadcmd "/bin/kill -s HUP 1"
使用docker build构建镜像
docker build -t san3xian/freessl_acme.sh:yourdomain .
如果上述步骤都没错的话,在构建这个带有域名证书信息的镜像的时候,就能看到申请下来的证书会被打印输出到控制台
并且根据回显内容可知,申请下来的证书保存在了 /root/.acme.sh/${acme_domain}/
路径下,而且证书会被拷贝一份到 /certs
路径下(此路径按实际需求在Dockerfile中修改即可)
在freessl.cn的acme页面中也能看到相应的客户端ID信息
到这里acme.sh自动签证书的步骤就已经基本做完了acme.sh配置参考: https://blog.freessl.cn/acme-quick-start/
正题2: 适配实际的tls证书使用环境
如前所述,本文是为了用容器化的freessl acme.sh向容器化的nginx进行证书自签,所以下面还会有docker-compose的内容
# ToDo