Let’s Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。
Let’s Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用。
证书签发工具有很多,certbot
、acme.sh
等,本文仅介绍Docker
版certbot
的方式作为演示。
域名解析提供商使用Cloudflare
,它提供免费的CDN
服务,将域名服务商改为Cloudflare,点击这里
安装docker
以Debian系Linux为例,其他请参照官方文档:
1
2
|
apt-get update
apt-get install -y docker.io
|
获取Cloudflare的API密钥
-
登录Cloudflare并进入控制台
-
选择你需要签发证书的域名

-
右边API
区域,点击获取您的API令牌

-
在API令牌页面
,点击查看Global API Key
,记下Key

创建Cloudflare密钥文件
新建文件cloudflare.ini
,内容如下:
1
2
|
dns_cloudflare_email = aaa@bbb.cc #你的Cloudflare邮箱
dns_cloudflare_api_key = cem3h493icrvs7kkpck989i9j7j5oq28 #你的Global API Key
|
首次签发证书
与cloudflare.ini
文件同目录下,运行certbot
容器进行证书签发。
-m
替换为你的邮箱,-d
替换为你需要签发的泛域名,如我的命令为:
1
2
3
4
5
6
7
8
9
10
|
docker run -it --rm --name certbot \
-v "./letsencrypt:/etc/letsencrypt" \
-v "./lib:/var/lib/letsencrypt" \
-v "./log:/var/log/letsencrypt" \
-v "./cloudflare.ini:/cloudflare.ini" \
certbot/dns-cloudflare certonly \
--dns-cloudflare-credentials /cloudflare.ini \
--dns-cloudflare-propagation-seconds 60 \
--server https://acme-v02.api.letsencrypt.org/directory \
-m aaa@bbb.cc -d "*.sssn.cc"
|
等待镜像的下载,和命令的执行成功后,在以下路径就能看到证书了:
1
2
3
4
5
6
7
8
|
cloudflare.ini
letsencrypt
|-- archive
|-- sssn.cc
|-- cert1.pem
|-- chain1.pem
|-- fullchain1.pem
|-- privkey1.pem
|
续签证书
与cloudflare.ini
文件同目录下,运行以下命令即可续签
1
2
3
4
5
6
|
docker run -i --rm \
-v "./letsencrypt:/etc/letsencrypt" \
-v "./lib:/var/lib/letsencrypt" \
-v "./log:/var/log/letsencrypt" \
-v "./cloudflare.ini:/cloudflare.ini" \
certbot/dns-cloudflare renew
|
命令执行成功后,在以下路径就能看到续签证书了,后缀为2,再次续签成功后为3,以此类推:
1
2
3
4
5
6
7
8
9
10
11
12
|
cloudflare.ini
letsencrypt
|-- archive
|-- sssn.cc
|-- cert1.pem
|-- cert2.pem
|-- chain1.pem
|-- chain2.pem
|-- fullchain1.pem
|-- fullchain2.pem
|-- privkey1.pem
|-- privkey2.pem
|
文章作者
石榴
上次更新
2019-08-23
许可协议
Creative Commons licenses 4.0