Certbot 签发一张单域名证书
目录
准备工作
-
将域名指向机器,关闭80端口的应用
-
准备 docker 环境
Makefile
# 要求参数: 邮箱
EMAIL ?= XX@YY.com
# 要求参数: 域名
DOMAIN ?= XX.cn
# 要求参数: 输出SSL的目录名称
SSL_DIRNAME ?= ssl_${DOMAIN}
PWD = $(shell pwd)
# make ssl 生成 ssl
# 证书保存到本机当前目录/<域名名称> 下
.PHONY:ssl
ssl:
rm -rf ${PWD}/${SSL_DIRNAME} && mkdir ${PWD}/${SSL_DIRNAME} && \
docker run --rm -p 80:80 \
-v ${PWD}/${SSL_DIRNAME}:/etc/letsencrypt/archive/${DOMAIN} \
certbot/certbot \
certonly \
-n \
--standalone \
--agree-tos \
-m ${EMAIL} \
-d ${DOMAIN}
# make ssl-test 测试签发
.PHONY:ssl-test
ssl-test:
docker run --rm -p 80:80 \
certbot/certbot \
certonly \
-n \
--standalone \
--agree-tos \
-m ${EMAIL} \
-d ${DOMAIN} \
--dry-run
参数 | 说明 |
---|---|
-n |
关闭交互式指令,传入后如果不是必须参数则不会询问输入 (Y/n) |
--standalone |
开启80端口服务器用于验证 |
--agree-tos |
确认阅读服务条款 |
-m |
邮箱 |
-d |
待签发的域名 |
--dry-run |
指定为测试环境,正式环境不能频繁签发,可以用此参数做自动化测试 |
用法
这种签发方式要开启80端口,签发时占用80端口的应用(如:Nginx、Httpd)要临时关闭。
测试签发
直接签发太频繁会被 certbot 禁用一周左右,建议先用测试签发检查会不会出错。
DOMAIN=<域名> EMAIL=<邮箱> make ssl-test
正式环境签发 (直接签发)
DOMAIN=<域名> EMAIL=<邮箱> make ssl
签发后,当前目录会生成 ssl_<域名>
,里面即是证书。