使用Let's Encrypt頒發(fā)免費(fèi)證書匀伏,參考地址:Documentation - Let's Encrypt (letsencrypt.org)
acme.sh
github地址 acmesh-official/acme.sh: A pure Unix shell script implementing ACME client protocol (github.com)
使用docker部署acme.sh
deploy to docker containers · acmesh-official/acme.sh Wiki (github.com)
docker run --rm -itd \
-v "$(pwd)/out":/acme.sh \ # 掛載目錄
--net=host \
--name=acme.sh \
-v /var/run/docker.sock:/var/run/docker.sock \ # 掛載宿主機(jī)docker環(huán)境
neilpang/acme.sh daemon
生成證書
由于域名在阿里云購買直晨,因此要使用Ali_Key和Ali_Secret谤草,可以從阿里云創(chuàng)建RAM用戶,并授予域名管理的權(quán)限
docker exec -e Ali_Key=你的key -e Ali_Secret=你的value acme.sh --issue -d 你的域名1 -d 你的域名2 --dns dns_ali --server letsencrypt
-d 指定域名抵窒,可以多個(gè)
--server指定頒發(fā)證書的CA
--dns 指定dns_ali
部署域名
可以通過ssh、docker等多種方式部署證書
docker exec \
-e DEPLOY_SSH_USER=root \
-e DEPLOY_SSH_SERVER="192.168.0.85" \
-e DEPLOY_SSH_KEYFILE=/etc/nginx/ssl/privkey.pem \
-e DEPLOY_SSH_FULLCHAIN="/etc/nginx/ssl/fullchain.pem" \
-e DEPLOY_SSH_REMOTE_CMD="service nginx force-reload" \
-e DEPLOY_SSH_BACKUP=yes \
acme.sh --deploy -d 你的域名1 --deploy-hook ssh
# docker 部署需要給nginx容器打上標(biāo)簽叠骑,如sh.acme.autoload.domain=example.com
docker exec \
-e DEPLOY_DOCKER_CONTAINER_LABEL=sh.acme.autoload.domain=example.com \
-e DEPLOY_DOCKER_CONTAINER_KEY_FILE=/var/certificate/privkey.pem \
-e DEPLOY_DOCKER_CONTAINER_FULLCHAIN_FILE="/var/certificate/fullchain.pem" \
-e DEPLOY_DOCKER_CONTAINER_RELOAD_CMD="service nginx force-reload" \
acme.sh --deploy -d 你的域名1 --deploy-hook docker