文档说明:只记录关键地方; Let’s Encrypt 是一个证书颁发机构(CA)
试验环境: linux debian 11 docker
目标:自助签发域名 SSL 证书 (包括通配符证书)
容器运行 acme.sh
version: "3"
services:
acme:
image: neilpang/acme.sh
container_name: acme.sh
network_mode: host
working_dir: /workdir/
volumes:
- ./:/workdir/
command:
- tail
- -f
- /dev/null
申请域名证书脚本
以阿里云万网域名为例,申请泛域名证书
vi generate-doamin-ssl.sh
#!/bin/env bash
set -exu
acme.sh --set-default-ca --server letsencrypt
export Ali_Key="AccessKey ID"
export Ali_Secret="Access Key" #云access_secret
# 申请证书(通配符证书)
acme.sh --force --issue \
-d "*.xiaoshuogeng.com" \
--dns dns_ali
# 生成证书
acme.sh --install-cert \
-d "*.xiaoshuogeng.com" \
--key-file /workdir/wildcard.xiaoshuogeng.com.key.pem \
--fullchain-file /workdir/wildcard.xiaoshuogeng.com.fullchain.pem
执行申请域名证书脚本
# 进入容器
docker exec -it acme.sh
# 运行申请证书脚本
sh generate-doamin-ssl.sh
参考文档
- Let's Encrypt 的运作方式
- ACME 客户端列表
- 实现acme协议的客户端之一:acme.sh
- acme.sh How to use DNS API
- Run acme.sh in docker
- acme.sh Blogs-and-tutorials
- 阿里云 RAM 用户 申请AccessKey ID 和 Access Key
- 阿里云 访问控制RAM 入门概述