配置免费证书

2023-12-08  本文已影响0人  菜出意料

使用Let's Encrypt颁发免费证书,参考地址: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 \  # 挂载宿主机docker环境
  neilpang/acme.sh daemon

生成证书

由于域名在阿里云购买,因此要使用Ali_Key和Ali_Secret,可以从阿里云创建RAM用户,并授予域名管理的权限

docker  exec   -e Ali_Key=你的key -e Ali_Secret=你的value  acme.sh --issue -d 你的域名1 -d 你的域名2 --dns dns_ali --server letsencrypt

-d 指定域名,可以多个
--server指定颁发证书的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容器打上标签,如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
上一篇下一篇

猜你喜欢

热点阅读