Docker通过Nginx,ACME快速部署证书

nginx default.conf

进入 nginx 目录

cd /opt/nginx-acme/nginx

创建配置文件目录

mkdir conf.d

创建配置基础配置文件

vi default.conf

default.conf

server {

listen 443 ssl;

server_name xxx.example.com;

ssl_certificate /etc/nginx/certs/${server_name}/fullchain.cer;

ssl_certificate_key /etc/nginx/certs/ s e r v e r n a m e / {server_name}/ servername/{server_name}.key;

add_header Strict-Transport-Security “max-age=31536000; includeSubDomains” always;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

}

}

部署 acme.sh


创建docker-compose.yml

/opt/nginx-acme/acme 程序运行路径下创建docker-compose.yml,通过docker-compose启动docker镜像的所有参数信息都会写入到该文件中

/acme.sh 映射到 /nginx/certs/ 这样 nginx 可以直接使用证书!

version: “3”

services:

acme.sh:

image: neilpang/acme.sh

container_name: acme.sh

restart: always

command: daemon

environment:

  • CF_Key=“xxx”

  • CF_Email=“xxx@xx.com”

volumes:

  • …/nginx/certs/:/acme.sh

network_mode: host

保存后在 docker-compose.yml 同目录下运行如下命令启动。如果更改了 docker-compose.yml 文件,只要在此运行如下命令,就能够更新到最新状态。

docker-compose up -d

申请证书

运行acme生成证书

docker exec acme.sh --register-account -m xxx@xx.com --issue --dns dns_cf -d xxx.example.com -d *.example.com --force --dnssleep

域名和dns服务商参数根据实际情况自行修改。要使用cloudflare创建证书,需要把域名的ns指向到cloudflare并在cloudflare网站上申请管理员的key。运行完成后证书会保存在./ssl/xxx.example.com/文件夹下。查看是否有如下文件即可:

ca.cer fullchain.cer example.com.cer example.com.conf example.com.csr example.com.csr.conf example.com.key

自动更新证书

运行 crontab -e 来编辑 crontab 文件,添加如下内容,保存即可。

可以运行 crontab -e 来查看已经添加的 crontab 任务

0 0 * * * docker exec acme.sh --cron

部署 nginx


创建docker-compose.yml

网络模式选择 host,宿主机需要开放 443 TCP 端口;

./certs 最好也不要改动,acme.sh 生成的证书映射在该目录下;

./conf.d 目录提前创建好并放入配置文件,不知道创建什么仔细阅读 准备运行程序目录 章节;

version: ‘3’

services:

nginx:

image: nginx

restart: always

network_mode: host

volumes:

  • ./certs:/etc/nginx/certs

  • ./conf.d:/etc/nginx/conf.d

  • ./log:/var/log/nginx

  • ./www:/var/www

启动nginx

docker-compose up -d

宿主机开放端口

开放端口

firewall-cmd --zone=public --add-port=443/tcp --permanent

firewall-cmd --reload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值