nginx的https证书自动续期
# nginx的https证书自动续期
本文讲述 nginx 的 https 证书如何自动续期。顺便讲述如何手动续期,如何方便地管理所有域名证书。有很多实现方案,包括收费方案和免费方案,本文采用的是 acme.sh 方案。
# 1. 安装 acme 客户端
需要将系统环境切换到root用户下执行,否则安装证书时可能会失败。
acme 客户端实际上就是个 shell 脚本,执行如下命令完成安装(若出现网络错误,反复重复直到成功即可)。 curl https://get.acme.sh | sh
若访问如上官方脚本较慢,可以使用如下国内镜像地址
curl https://gitcode.net/cert/cn-acme.sh/-/raw/master/install.sh?inline=false | sh
[root@iZ2ze7011et12xez70sp3dZ nginx]# curl https://get.acme.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 775 0 775 0 0 145 0 --:--:-- 0:00:05 --:--:-- 160
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 201k 100 201k 0 0 18804 0 0:00:10 0:00:10 --:--:-- 19012
[2020年 11月 02日 星期一 16:12:52 CST] Installing from online archive.
[2020年 11月 02日 星期一 16:12:52 CST] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[2020年 11月 02日 星期一 16:13:10 CST] Extracting master.tar.gz
[2020年 11月 02日 星期一 16:13:10 CST] It is recommended to install socat first.
[2020年 11月 02日 星期一 16:13:10 CST] We use socat for standalone server if you use standalone mode.
[2020年 11月 02日 星期一 16:13:10 CST] If you don't use standalone mode, just ignore this warning.
[2020年 11月 02日 星期一 16:13:10 CST] Installing to /root/.acme.sh
[2020年 11月 02日 星期一 16:13:10 CST] Installed to /root/.acme.sh/acme.sh
[2020年 11月 02日 星期一 16:13:10 CST] Installing alias to '/root/.bashrc'
[2020年 11月 02日 星期一 16:13:10 CST] OK, Close and reopen your terminal to start using acme.sh
[2020年 11月 02日 星期一 16:13:10 CST] Installing alias to '/root/.cshrc'
[2020年 11月 02日 星期一 16:13:10 CST] Installing alias to '/root/.tcshrc'
[2020年 11月 02日 星期一 16:13:10 CST] Installing cron job
[2020年 11月 02日 星期一 16:13:10 CST] Good, bash is found, so change the shebang to use bash as preferred.
[2020年 11月 02日 星期一 16:13:10 CST] OK
[2020年 11月 02日 星期一 16:13:10 CST] Install success!
[root@iZ2ze7011et12xez70sp3dZ nginx]#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
acme 依赖定时任务, 所以若系统没有安装 cron 服务,安装会失败,并提示您安装 cron 服务。
如上的安装过程中,会:
- 自动创建目录~/.acme.sh/ 最终的 acme 客户端路径为~/.acme.sh/acme.sh 执行~/.acme.sh/acme.sh -v, 查看客户端版本
[root@iZ2ze7011et12xez70sp3dZ nginx]# ~/.acme.sh/acme.sh -v
https://github.com/acmesh-official/acme.sh
v2.8.8
[root@iZ2ze7011et12xez70sp3dZ nginx]#
Copied!
2
3
4
5
6
7
- 自动创建 alias 别名 acme.sh 这样在执行脚本/root/.acme.sh/acme.sh 的时候就没必要填写完整路径,只需要执行 acme.sh 即可识别。
[root@iZ2ze7011et12xez70sp3dZ nginx]# alias
alias acme.sh='/root/.acme.sh/acme.sh'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@iZ2ze7011et12xez70sp3dZ nginx]#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 自动创建 cronjob 定时任务, 每天定时自动检测所有的证书,如果快过期了,则会自动更新证书。 执行crontab -l,查看当前的定时任务列表,发现已经被自动增加了 acme 脚本的定时任务。
[root@iZ2ze7011et12xez70sp3dZ nginx]# crontab -l
10 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
[root@iZ2ze7011et12xez70sp3dZ nginx]#
Copied!
2
3
4
5
6
# 2. 生成证书
证书的验证支持文件验证或 dns 验证,2 种方式采用其中一种即可。推荐采用 dns 验证,dns 验证的优势如下:
- 支持泛域名证书的验证,但是文件验证方式不支持泛域名。
- 生成证书的操作在机器选择上更灵活,采用 dns 验证可以在任何机器上生成证书,但是采用文件验证就只能在域名所属服务器上生成证书(因为需要指定 nginx 发布根目录)。
注意: 无论采用哪种验证方式,在验证过程中会自动校验http域名是否有效。所以在进入该步骤的前提:您的域名可以通过http正常访问。
# 2.1 采用文件验证方式生成证书
- 采用文件验证方式,会要求指定 web 根目录(acme 会自动在根目录下生成校验文件,然后通过域名访问校验文件,待证书验证完成后自动删除校验文件), 所以采用这种方式生成证书,一般需要在域名所在服务器上操作。
- 当然,执行本操作之前,您必须要确保该域名的http服务是可以正常访问的,因为验证过程中会使用http服务做验证。
执行如下命令 ~/.acme.sh/acme.sh --issue -d sofineday.com -d www.sofineday.com --webroot /static-file/blog/
参数的含义:
- --issue 是 acme.sh 脚本用来颁发证书的指令
- -d 是--domain 的简称,其后面填写要续期的域名 acme.sh 支持多个域名共用同一个证书。 如上命令生成的证书可同时用于 sofineday.com 和 www.sofineday.com。
- -w 是--webroot 的简称,其后面须填写网站的根目录
证书的实际生成过程如下:
root@ff939cf2d477:~# ~/.acme.sh/acme.sh --issue -d sofineday.com -d www.sofineday.com --webroot /static-file/blog/
[Mon Nov 2 09:34:37 UTC 2020] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Mon Nov 2 09:34:37 UTC 2020] Create account key ok.
[Mon Nov 2 09:34:37 UTC 2020] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Mon Nov 2 09:34:39 UTC 2020] Registered
[Mon Nov 2 09:34:39 UTC 2020] ACCOUNT_THUMBPRINT='J2XJiPj7rSQ4wODVXqtkbk5G3j3Jk6fVuw0j2EYNQr8'
[Mon Nov 2 09:34:39 UTC 2020] Creating domain key
[Mon Nov 2 09:34:39 UTC 2020] The domain key is here: /root/.acme.sh/sofineday.com/sofineday.com.key
[Mon Nov 2 09:34:39 UTC 2020] Multi domain='DNS:sofineday.com,DNS:www.sofineday.com'
[Mon Nov 2 09:34:40 UTC 2020] Getting domain auth token for each domain
[Mon Nov 2 09:34:42 UTC 2020] Getting webroot for domain='sofineday.com'
[Mon Nov 2 09:34:42 UTC 2020] Getting webroot for domain='www.sofineday.com'
[Mon Nov 2 09:34:42 UTC 2020] Verifying: sofineday.com
[Mon Nov 2 09:34:46 UTC 2020] Success
[Mon Nov 2 09:34:46 UTC 2020] Verifying: www.sofineday.com
[Mon Nov 2 09:34:50 UTC 2020] Pending
[Mon Nov 2 09:34:53 UTC 2020] Pending
[Mon Nov 2 09:34:57 UTC 2020] Pending
[Mon Nov 2 09:35:00 UTC 2020] Pending
[Mon Nov 2 09:35:03 UTC 2020] Pending
[Mon Nov 2 09:35:07 UTC 2020] Pending
[Mon Nov 2 09:35:10 UTC 2020] Pending
[Mon Nov 2 09:35:12 UTC 2020] Pending
[Mon Nov 2 09:35:15 UTC 2020] Pending
[Mon Nov 2 09:35:18 UTC 2020] Pending
[Mon Nov 2 09:35:21 UTC 2020] Pending
[Mon Nov 2 09:35:24 UTC 2020] Pending
[Mon Nov 2 09:35:27 UTC 2020] Pending
[Mon Nov 2 09:35:30 UTC 2020] Pending
[Mon Nov 2 09:35:32 UTC 2020] Pending
[Mon Nov 2 09:35:35 UTC 2020] Success
[Mon Nov 2 09:35:35 UTC 2020] Verify finished, start to sign.
[Mon Nov 2 09:35:35 UTC 2020] Lets finalize the order.
[Mon Nov 2 09:35:35 UTC 2020] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/101076451/5997675384'
[Mon Nov 2 09:35:36 UTC 2020] Downloading cert.
[Mon Nov 2 09:35:36 UTC 2020] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/03a494dee4d14855d98ee65a117330602f7b'
[Mon Nov 2 09:35:37 UTC 2020] Cert success.
-----BEGIN CERTIFICATE-----
MIIFZDCCBEygAwIBAgISA6SU3uTRSFXZjuZaEXMwYC97MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDExMDIwODM1MzZaFw0y
MTAxMzEwODM1MzZaMBgxFjAUBgNVBAMTDXNvZmluZWRheS5jb20wggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs+qLKD9XM+HZ9s9rFNnoN+6s/+NAgbD4A
N7J2v2x19EGI68V+3p4PfJ9mC/hyPGOE/S09Is+h3gI1q5G9ePExbeImUnuhTfid
9IOq9wf26EmqGj0Q2wXxP5QQf1kBQvweX/bel5xun9s8UdqDhOQnDEFhWRue4DHB
Fmdme7bl0dtSeuVM7AOTW9obUA2tz4h6zWPJY4vXTNcrnBst3CCzDOV3vivIO08z
CqCapQGJleQTUM+OQNJ63vM63vA2YH1HmQx0h2HTrlCa4RcGaCudUO8p1uBjsi5N
Da74KJHn8uAAKiGmNVxH3UfHptipj83tDl/gVYc8ImsxNcZkDQxZAgMBAAGjggJ0
MIICcDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF
BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFIkCvyI57dP+OAsBKxndWaiV8IYQ
MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsGAQUFBwEBBGMw
YTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y
ZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNlbmNyeXB0Lm9y
Zy8wKwYDVR0RBCQwIoINc29maW5lZGF5LmNvbYIRd3d3LnNvZmluZWRheS5jb20w
TAYDVR0gBEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcC
ARYaaHR0cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEDBgorBgEEAdZ5AgQCBIH0
BIHxAO8AdgBvU3asMfAxGdiZAKRRFf93FRwR2QLBACkGjbIImjfZEwAAAXWIT9xE
AAAEAwBHMEUCIC8k9sHNJLRPehn8rXklLCqPeH4xAfvhBF5SgLAmurIvAiEA0Csc
tInX7h/WYncMNZArhZbzW0CWDGe5XaORBul36gAAdQD2XJQv0XcwIhRUGAgwlFaO
400TGTO/3wwvIAvMTvFk4wAAAXWIT9wkAAAEAwBGMEQCIGQ6tViJ6Vy5ZUjTVLpg
jynJ+faFUtTU+O1izPw3cvldAiB0J3OxmXMr8h3KdqmDFhJxSqa+hYd7TV4SkkEH
nt3BjzANBgkqhkiG9w0BAQsFAAOCAQEAbEoKns5FpQj5VgxoYlS+StnJS/db5wnc
6hnZ3Rya0X8huuOeprtWpFEH3qMIrCmXSsWJLmUaaJKRIAhTqRPsoLXf/HxT4IW2
9xrW435RKxisSfD4EJ4pybbNunHFms+FjJY+m5a3ojDjpErz8FVSeo88811yXNBz
rfv5Pyt6s+0gFg0gO8wB6SWbsNPGA0HvhBmlo8mVOr2l2jNuH0uIRROKgZXvK/V1
+bxpWUwAo5p/CSjFqWc7P/BPM3VQ/gHlkcpH37PWJDB+vzZkYzhuDc9hvxxR2/56
86mbiykVKVvpK91imQy7sD0L1Rpv1kDNHhoBY5l3XBcr6gdv5STrpw==
-----END CERTIFICATE-----
[Mon Nov 2 09:35:37 UTC 2020] Your cert is in /root/.acme.sh/sofineday.com/sofineday.com.cer
[Mon Nov 2 09:35:37 UTC 2020] Your cert key is in /root/.acme.sh/sofineday.com/sofineday.com.key
[Mon Nov 2 09:35:37 UTC 2020] The intermediate CA cert is in /root/.acme.sh/sofineday.com/ca.cer
[Mon Nov 2 09:35:37 UTC 2020] And the full chain certs is there: /root/.acme.sh/sofineday.com/fullchain.cer
root@ff939cf2d477:~#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
从以上生成过程可以看出,证书的生成位置为/root/.acme.sh/sofineday.com/目录。
root@ff939cf2d477:~# ls -l /root/.acme.sh/sofineday.com/
total 28
-rw-r--r-- 1 root root 1648 Nov 2 09:35 ca.cer
-rw-r--r-- 1 root root 3579 Nov 2 09:35 fullchain.cer
-rw-r--r-- 1 root root 1931 Nov 2 09:35 sofineday.com.cer
-rw-r--r-- 1 root root 639 Nov 2 09:35 sofineday.com.conf
-rw-r--r-- 1 root root 997 Nov 2 09:34 sofineday.com.csr
-rw-r--r-- 1 root root 230 Nov 2 09:34 sofineday.com.csr.conf
-rw-r--r-- 1 root root 1679 Nov 2 09:34 sofineday.com.key
root@ff939cf2d477:~#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
# 2.2 采用dns 验证方式生成证书
# 2.2.1 配置 DNS 提供商的DNS API key
本文以阿里云为例
- 登录阿里云后台,进入个人中心的访问控制模块
- 创建 dns api key
- 安全起见,我们专门为当前 api 业务创建一个子用户,注意勾选编程访问
- 复制AccessKey ID和AccessKey Secret 这 2 个值会在后面步骤用到
- 为子用户添加权限 AliyunDNSFullAccess
- 安全起见,我们专门为当前 api 业务创建一个子用户,注意勾选编程访问
# 2.2.2 配置系统环境变量
定义如下 2 个环境变量,变量值替换为上一步中从阿里云后台获取的 dns api key。
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
Copied!
2
3
4
5
# 2.2.3 生成证书
执行如下命令,生成证书。将参数替换为实际值即可。
acme.sh --issue --dns dns_ali -d sofineday.com -d *.sofineday.com
Copied!
2
3
4
执行过程如下:
[root@iZ2ze7011et12xez70sp3dZ nginx]# acme.sh --issue --dns dns_ali -d sofineday.com -d *.sofineday.com
[2020年 11月 03日 星期二 10:29:00 CST] Domains have changed.
[2020年 11月 03日 星期二 10:29:00 CST] Using CA: https://acme-v02.api.letsencrypt.org/directory
[2020年 11月 03日 星期二 10:29:00 CST] Multi domain='DNS:sofineday.com,DNS:*.sofineday.com'
[2020年 11月 03日 星期二 10:29:00 CST] Getting domain auth token for each domain
[2020年 11月 03日 星期二 10:29:05 CST] Getting webroot for domain='sofineday.com'
[2020年 11月 03日 星期二 10:29:05 CST] Getting webroot for domain='*.sofineday.com'
[2020年 11月 03日 星期二 10:29:05 CST] Adding txt value: D2YeIt9SuAvgUgBxot6qX6ezcwG8-Dv7eaNQY96fDow for domain: _acme-challenge.sofineday.com
[2020年 11月 03日 星期二 10:29:07 CST] The txt record is added: Success.
[2020年 11月 03日 星期二 10:29:07 CST] Let's check each DNS record now. Sleep 20 seconds first.
[2020年 11月 03日 星期二 10:29:28 CST] Checking sofineday.com for _acme-challenge.sofineday.com
[2020年 11月 03日 星期二 10:29:31 CST] Domain sofineday.com '_acme-challenge.sofineday.com' success.
[2020年 11月 03日 星期二 10:29:31 CST] All success, let's return
[2020年 11月 03日 星期二 10:29:31 CST] sofineday.com is already verified, skip dns-01.
[2020年 11月 03日 星期二 10:29:31 CST] Verifying: *.sofineday.com
[2020年 11月 03日 星期二 10:29:35 CST] Success
[2020年 11月 03日 星期二 10:29:35 CST] Removing DNS records.
[2020年 11月 03日 星期二 10:29:35 CST] Removing txt: D2YeIt9SuAvgUgBxot6qX6ezcwG8-Dv7eaNQY96fDow for domain: _acme-challenge.sofineday.com
[2020年 11月 03日 星期二 10:29:39 CST] Removed: Success
[2020年 11月 03日 星期二 10:29:39 CST] Verify finished, start to sign.
[2020年 11月 03日 星期二 10:29:39 CST] Lets finalize the order.
[2020年 11月 03日 星期二 10:29:39 CST] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/101071293/6009613602'
[2020年 11月 03日 星期二 10:29:40 CST] Downloading cert.
[2020年 11月 03日 星期二 10:29:40 CST] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/0307b969bcc3e239c2974cbc9497b1d42730'
[2020年 11月 03日 星期二 10:29:41 CST] Cert success.
-----BEGIN CERTIFICATE-----
MIIFYzCCBEugAwIBAgISAwe5abzD4jnCl0y8lJex1CcwMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDExMDMwMTI5NDBaFw0y
MTAyMDEwMTI5NDBaMBgxFjAUBgNVBAMTDXNvZmluZWRheS5jb20wggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDfAdIati/JZFCEMmTXD4j2UgOwKbKynjHk
ghcW0wA+YyNvIW/Y/kmN4fMk3qEslG6l/XXZ0Lv1IYYStRY70BlUUsHsJ/K/Mu0O
+EFcCBOfggOoZ8J6RCP1tU/erTq2JJTiWNmlQSqCq92SyJJvVdYYOBRrlMuxtBba
8pPLjcpxeSO4iEqlNJh+VJNJE1Loh3X77zRBkLwlsetcI/DwKEn670M01l61XMG1
QMX8RRkp+O4J8Hy6SJlEFv1a320pZJ9IA5D3x8YpgvKJzb5043aN0gPBJ37MVtJq
Mw4NBh9gLk8JKNgbNgJPkJypggLXmGYiLLaFIZEPcoDtjF+xdQ+1AgMBAAGjggJz
MIICbzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF
BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFORKHDj/oRKs5nweoobwEffhV0T0
MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsGAQUFBwEBBGMw
YTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y
ZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNlbmNyeXB0Lm9y
Zy8wKQYDVR0RBCIwIIIPKi5zb2ZpbmVkYXkuY29tgg1zb2ZpbmVkYXkuY29tMEwG
A1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEW
Gmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB9QSB
8gDwAHYAXNxDkv7mq0VEsV6a1FbmEDf71fpH3KFzlLJe5vbHDsoAAAF1i/BDCgAA
BAMARzBFAiEA/4/3aI6i8hDRexD0lmhMTnEPZzp3+dIaEhRtNZiSetsCIBdqdotF
yfi5uj3bcSBoJHfTUgAYLCTGJX4zJSB34rQgAHYA9lyUL9F3MCIUVBgIMJRWjuNN
Exkzv98MLyALzE7xZOMAAAF1i/BDCgAABAMARzBFAiEA3RVYNLqFuEy985akbyOV
ICG2ztPbZpWUPZYymjRABxkCIGi3cqZkBOAuZUmS2U/8Qd27vlOQpL4XgMmM/24T
qwjrMA0GCSqGSIb3DQEBCwUAA4IBAQBMkWf9jdxzdXc1G1ZE9lJELAsSDjbS79Dv
5fgz2E/EkFaEoPKVUWGMco3j6N1zfhqBOgwXEZdl1HPa+F4RRaCRh2cjodFzm0Xe
r9lE9H95ZhePfYuiMWEibIV6jDOWJBqqOjml9pvQXpFdnqIiwAZ6Bj5GiM6ggiZu
GswmpY/bzwj9YLf9f5VJbRSD4dLm28GRrJGL8sezPZUON44F3I9NbB01JIFPGYkf
8rhwJFcdEg00micTjsdb21/JaRaG9WBcXCjuGF+3z7rsIvK4ZxltkNqUmvD+c44W
DleXTCzniMPbjugvDF+T1wf1mGM9MsBmuuTGLAPvCLjvYTKOtW48
-----END CERTIFICATE-----
[2020年 11月 03日 星期二 10:29:41 CST] Your cert is in /root/.acme.sh/sofineday.com/sofineday.com.cer
[2020年 11月 03日 星期二 10:29:41 CST] Your cert key is in /root/.acme.sh/sofineday.com/sofineday.com.key
[2020年 11月 03日 星期二 10:29:41 CST] The intermediate CA cert is in /root/.acme.sh/sofineday.com/ca.cer
[2020年 11月 03日 星期二 10:29:41 CST] And the full chain certs is there: /root/.acme.sh/sofineday.com/fullchain.cer
[root@iZ2ze7011et12xez70sp3dZ nginx]#
[root@iZ2ze7011et12xez70sp3dZ nginx]# acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
sofineday.com "" *.sofineday.com LetsEncrypt.org 2020年 11月 03日 星期二 02:29:41 UTC 2021年 01月 02日 星期六 02:29:41 UTC
[root@iZ2ze7011et12xez70sp3dZ nginx]#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
默认 acme.sh 会在证书生成 60 天后执行续期(您可以通过 acme.sh --list 输出的 Created 和 Renew 列看出)。若想对该值做自定义,指定--days 参数即可,如:
acme.sh --issue --dns dns_ali -d sofineday.com -d \*.sofineday.com --days 90
# 2.3 选择CA服务器
当前最新版本的acme.sh,默认情况下使用的CA服务器是zerossl
,那么在”生成证书命令“可能会执行失败,那么可以选择其他CA服务器。
acme.sh支持4个CA服务器,分别是 Let's Encrypt、Buypass、ZeroSSL 和 SSL.com,默认使用 ZeroSSL。 对应的设置命令如下:
acme.sh --set-default-ca --server letsencrypt
acme.sh --set-default-ca --server buypass
acme.sh --set-default-ca --server zerossl
Copied!
2
3
4
5
6
示例如下:
root@VM-0-6-ubuntu:~# acme.sh --issue --dns dns_ali -d sofineday.com -d *.sofineday.com
[Sat 09 Apr 2022 09:00:22 PM CST] Using CA: https://acme.zerossl.com/v2/DV90
[Sat 09 Apr 2022 09:00:22 PM CST] Multi domain='DNS:sofineday.com,DNS:*.sofineday.com'
[Sat 09 Apr 2022 09:00:22 PM CST] Getting domain auth token for each domain
[Sat 09 Apr 2022 09:01:03 PM CST] Getting webroot for domain='sofineday.com'
[Sat 09 Apr 2022 09:01:03 PM CST] Getting webroot for domain='*.sofineday.com'
[Sat 09 Apr 2022 09:01:03 PM CST] Adding txt value: uart28HH2nrmXvUHuanWanlUcwQdijubkD2tBlvtBWM for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:01:05 PM CST] The txt record is added: Success.
[Sat 09 Apr 2022 09:01:05 PM CST] Adding txt value: 8vauPgEuUjFL124BNSG1-gqSzXtyKKKsa8uO19gICpA for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:01:07 PM CST] The txt record is added: Success.
[Sat 09 Apr 2022 09:01:07 PM CST] Let's check each DNS record now. Sleep 20 seconds first.
[Sat 09 Apr 2022 09:01:28 PM CST] You can use '--dnssleep' to disable public dns checks.
[Sat 09 Apr 2022 09:01:28 PM CST] See: https://github.com/acmesh-official/acme.sh/wiki/dnscheck
[Sat 09 Apr 2022 09:01:28 PM CST] Checking sofineday.com for _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:01:31 PM CST] Domain sofineday.com '_acme-challenge.sofineday.com' success.
[Sat 09 Apr 2022 09:01:31 PM CST] Checking sofineday.com for _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:01:33 PM CST] Domain sofineday.com '_acme-challenge.sofineday.com' success.
[Sat 09 Apr 2022 09:01:33 PM CST] All success, let's return
[Sat 09 Apr 2022 09:01:33 PM CST] Verifying: sofineday.com
[Sat 09 Apr 2022 09:01:38 PM CST] Processing, The CA is processing your order, please just wait. (1/30)
[Sat 09 Apr 2022 09:01:50 PM CST] Success
[Sat 09 Apr 2022 09:01:50 PM CST] Verifying: *.sofineday.com
[Sat 09 Apr 2022 09:01:59 PM CST] Processing, The CA is processing your order, please just wait. (1/30)
[Sat 09 Apr 2022 09:02:15 PM CST] Success
[Sat 09 Apr 2022 09:02:15 PM CST] Removing DNS records.
[Sat 09 Apr 2022 09:02:15 PM CST] Removing txt: uart28HH2nrmXvUHuanWanlUcwQdijubkD2tBlvtBWM for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:02:18 PM CST] Removed: Success
[Sat 09 Apr 2022 09:02:18 PM CST] Removing txt: 8vauPgEuUjFL124BNSG1-gqSzXtyKKKsa8uO19gICpA for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:02:20 PM CST] Removed: Success
[Sat 09 Apr 2022 09:02:20 PM CST] Verify finished, start to sign.
[Sat 09 Apr 2022 09:02:20 PM CST] Lets finalize the order.
[Sat 09 Apr 2022 09:02:20 PM CST] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw/finalize'
[Sat 09 Apr 2022 09:02:27 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:02:27 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:02:43 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:02:50 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:02:50 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:03:06 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:03:13 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:03:13 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:03:30 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:03:38 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:03:38 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:03:54 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:04:00 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:04:00 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:04:16 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:04:21 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:04:21 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:04:37 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:04:41 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:04:41 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:04:57 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:05:11 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:05:11 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:05:27 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:05:35 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:05:35 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:05:51 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:06:00 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:06:00 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:06:16 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:06:25 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:06:25 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:06:41 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:06:46 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:06:46 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:07:02 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:07:08 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:07:08 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:07:24 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:07:30 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:07:30 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:07:46 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:07:51 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:07:51 PM CST] Retry after: 15
7
[Sat 09 Apr 2022 09:08:07 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:08:15 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:08:15 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:08:31 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:08:38 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:08:38 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:08:54 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:09:02 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:09:02 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:09:18 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:09:28 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:09:28 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:09:44 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:09:51 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:09:51 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:10:07 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:10:15 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:10:15 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:10:31 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:10:39 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:10:39 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:10:55 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:11:04 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:11:04 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:11:20 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:11:30 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:11:30 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:11:46 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:11:55 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:11:55 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:12:11 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:12:17 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:12:17 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:12:33 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:12:38 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:12:38 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:12:54 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:13:02 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:13:02 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:13:18 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:13:24 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:13:24 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:13:40 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:13:50 PM CST] Order status is processing, lets sleep and retry.
[Sat 09 Apr 2022 09:13:50 PM CST] Retry after: 15
[Sat 09 Apr 2022 09:14:06 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw
[Sat 09 Apr 2022 09:14:16 PM CST] Sign failed, can not get Le_LinkCert, retry time limit.
[Sat 09 Apr 2022 09:14:16 PM CST] {"status":"processing","expires":"2022-07-08T13:00:44Z","identifiers":[{"type":"dns","value":"sofineday.com"},{"type":"dns","value":"*.sofineday.com"}],"authorizations":["https://acme.zerossl.com/v2/DV90/authz/uNHGSChx4Y0zPX0-CjoPqQ","https://acme.zerossl.com/v2/DV90/authz/ArKxq9XJFIex2A675unajg"],"finalize":"https://acme.zerossl.com/v2/DV90/order/9P4RbhWgIVoaIPvAuCh5zw/finalize"}
[Sat 09 Apr 2022 09:14:16 PM CST] Please add '--debug' or '--log' to check more details.
[Sat 09 Apr 2022 09:14:16 PM CST] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
root@VM-0-6-ubuntu:~#
root@VM-0-6-ubuntu:~#
root@VM-0-6-ubuntu:~# acme.sh --issue --dns dns_ali -d sofineday.com -d *.sofineday.com --server letsencrypt
[Sat 09 Apr 2022 09:17:44 PM CST] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Sat 09 Apr 2022 09:17:44 PM CST] Create account key ok.
[Sat 09 Apr 2022 09:17:44 PM CST] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Sat 09 Apr 2022 09:17:51 PM CST] Registered
[Sat 09 Apr 2022 09:17:51 PM CST] ACCOUNT_THUMBPRINT='Vqg9KL25_J013ZSP2sjqGyWV1iQ9pTEml2LbJ5XtlpA'
[Sat 09 Apr 2022 09:17:51 PM CST] Multi domain='DNS:sofineday.com,DNS:*.sofineday.com'
[Sat 09 Apr 2022 09:17:51 PM CST] Getting domain auth token for each domain
[Sat 09 Apr 2022 09:17:55 PM CST] Getting webroot for domain='sofineday.com'
[Sat 09 Apr 2022 09:17:55 PM CST] Getting webroot for domain='*.sofineday.com'
[Sat 09 Apr 2022 09:17:55 PM CST] Adding txt value: J6Fijfd78wgVKOqQ9AZzhMzlq60WwCeuHCXxr0ao80I for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:17:58 PM CST] The txt record is added: Success.
[Sat 09 Apr 2022 09:17:58 PM CST] Adding txt value: vl7Dmv3I3K83yeVwUQUg6l9SGpzhj0c06W87cyhwdhc for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:17:59 PM CST] The txt record is added: Success.
[Sat 09 Apr 2022 09:17:59 PM CST] Let's check each DNS record now. Sleep 20 seconds first.
[Sat 09 Apr 2022 09:18:21 PM CST] You can use '--dnssleep' to disable public dns checks.
[Sat 09 Apr 2022 09:18:21 PM CST] See: https://github.com/acmesh-official/acme.sh/wiki/dnscheck
[Sat 09 Apr 2022 09:18:21 PM CST] Checking sofineday.com for _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:18:22 PM CST] Domain sofineday.com '_acme-challenge.sofineday.com' success.
[Sat 09 Apr 2022 09:18:22 PM CST] Checking sofineday.com for _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:18:24 PM CST] Domain sofineday.com '_acme-challenge.sofineday.com' success.
[Sat 09 Apr 2022 09:18:24 PM CST] All success, let's return
[Sat 09 Apr 2022 09:18:24 PM CST] Verifying: sofineday.com
[Sat 09 Apr 2022 09:18:24 PM CST] Pending, The CA is processing your order, please just wait. (1/30)
[Sat 09 Apr 2022 09:18:28 PM CST] Success
[Sat 09 Apr 2022 09:18:28 PM CST] Verifying: *.sofineday.com
[Sat 09 Apr 2022 09:18:31 PM CST] Pending, The CA is processing your order, please just wait. (1/30)
[Sat 09 Apr 2022 09:18:33 PM CST] Success
[Sat 09 Apr 2022 09:18:33 PM CST] Removing DNS records.
[Sat 09 Apr 2022 09:18:33 PM CST] Removing txt: J6Fijfd78wgVKOqQ9AZzhMzlq60WwCeuHCXxr0ao80I for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:18:36 PM CST] Removed: Success
[Sat 09 Apr 2022 09:18:36 PM CST] Removing txt: vl7Dmv3I3K83yeVwUQUg6l9SGpzhj0c06W87cyhwdhc for domain: _acme-challenge.sofineday.com
[Sat 09 Apr 2022 09:18:39 PM CST] Removed: Success
[Sat 09 Apr 2022 09:18:39 PM CST] Verify finished, start to sign.
[Sat 09 Apr 2022 09:18:39 PM CST] Lets finalize the order.
[Sat 09 Apr 2022 09:18:39 PM CST] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/489730070/78685657260'
[Sat 09 Apr 2022 09:18:40 PM CST] Downloading cert.
[Sat 09 Apr 2022 09:18:40 PM CST] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/03c0eb027c64ee2385bc63164c6859c78936'
[Sat 09 Apr 2022 09:18:41 PM CST] Cert success.
-----BEGIN CERTIFICATE-----
MIIFMjCCBBqgAwIBAgISA8DrAnxk7iOFvGMWTGhZx4k2MA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMjA0MDkxMjE4MzlaFw0yMjA3MDgxMjE4MzhaMBgxFjAUBgNVBAMT
DXNvZmluZWRheS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA
9Db5gZwDb5hDJrsVdjgWz8Vo3i8LdbJI+ekWZCaqd5bRkkiQlsG+eR7R8EFx523h
a9gZIsKwRxfPHbtmhwi2dbEC5lp9JnHUwiyuGlj+7hWWD6tk+qJZDsNhGSNJLDHU
aSQZPtHNLLgQe+4Ebza1YzZjrbckJYoLU9Z/QBW7bJ663HZPtqVgYmNPJp/6vRM/
obU5nMeIiBtbKlKbLj/GiY6qfJZaTsFsKweXgWpKP3T2R+DUZzr+X/e74gRrfJvv
M6GH4nlYfXQUDVMTPJr5mxucDIcfCF0GoI/HWDGygm+TP2IcCMB++brUiHWGFpBF
BJzTuSmjz6rMXT2bMEp7AgMBAAGjggJaMIICVjAOBgNVHQ8BAf8EBAMCBaAwHQYD
VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0O
BBYEFAfHx5ZjyHE2HFxemnD48j+U64F8MB8GA1UdIwQYMBaAFBQusxe3WFbLrlAJ
QOYfr52LFMLGMFUGCCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL3Iz
Lm8ubGVuY3Iub3JnMCIGCCsGAQUFBzAChhZodHRwOi8vcjMuaS5sZW5jci5vcmcv
MCkGA1UdEQQiMCCCDyouc29maW5lZGF5LmNvbYINc29maW5lZGF5LmNvbTBMBgNV
HSAERTBDMAgGBmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpo
dHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCCAQUGCisGAQQB1nkCBAIEgfYEgfMA
8QB3AEHIyrHfIkZKEMahOglCh15OMYsbA+vrS8do8JBilgb2AAABgA56B4EAAAQD
AEgwRgIhAOfjvcPoqyBNuO8kp0xhg4TWYRd1tD8lkJpTNqjsHvydAiEAwVTCAgDm
XpheyaepkfeDjg2/9lzd9mboO/yzziiqHNIAdgBGpVXrdfqRIDC1oolp9PN9ESxB
dL79SbiFq/L8cP5tRwAAAYAOege7AAAEAwBHMEUCIQC/xWJZ35gtp0WjjAib7psE
a0noXK4+zb9XyE/ksoligQIgLnncKjYGaX0vDSAgCktv86/xUMydFhU4QxKYwo6C
fnowDQYJKoZIhvcNAQELBQADggEBALWb+zJkZPE27Xcsfepij5QUfbmQRgjUeJE3
yawPYswWc+6CWQghlzr3dlXyT3ExAQxFi2t5N7cKneUaJtDO0tvDH/VaaEUgYpzE
RvwW/v8pjYQVqyMduT881vFcz0rjZC5sAMKHtE1esrJrD2ApJVDG3dTB3i0S3L6l
hEmmzBQdjK1NbIh3gpcpaHfwSjqr9zRIA/tKFqO0NUbx2tn4+XnO34AZMZOGjB+F
+WVf02er748xvDxqzVwIzIi9DQDz1t6ESMPQZC07o9VTl2vwxtWEq/ic5KmwpZhe
1btv6iZJHEtZQE5WzPYGcxYPTsfg3OEYJSomr2KT0RntTKC6nVo=
-----END CERTIFICATE-----
[Sat 09 Apr 2022 09:18:41 PM CST] Your cert is in: /root/.acme.sh/sofineday.com/sofineday.com.cer
[Sat 09 Apr 2022 09:18:41 PM CST] Your cert key is in: /root/.acme.sh/sofineday.com/sofineday.com.key
[Sat 09 Apr 2022 09:18:41 PM CST] The intermediate CA cert is in: /root/.acme.sh/sofineday.com/ca.cer
[Sat 09 Apr 2022 09:18:41 PM CST] And the full chain certs is there: /root/.acme.sh/sofineday.com/fullchain.cer
root@VM-0-6-ubuntu:~#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
通过如上的真实示例可以看出,命令acme.sh --issue --dns dns_ali -d sofineday.com -d *.sofineday.com
执行失败,改为acme.sh --issue --dns dns_ali -d sofineday.com -d *.sofineday.com --server letsencrypt
后执行成功了。
# 3. 安装证书
# 3.1 安装证书
执行如下命令将前面生成的证书安装到 nginx 中。本质上就是拷贝证书文件到 nginx 的证书目录下。 该命令会被 ACME 记录下来,当做证书更新操作时,会自动执行该命令
acme.sh --installcert -d sofineday.com \
--key-file /data/docker-service/nginx/cert/_.sofineday.com.private.key \
--fullchain-file /data/docker-service/nginx/cert/_.sofineday.com.full_chain.pem \
--reloadcmd "docker cp /data/docker-service/nginx/cert/_.sofineday.com.private.key nginx:/etc/nginx/cert/ && docker cp /data/docker-service/nginx/cert/_.sofineday.com.full_chain.pem nginx:/etc/nginx/cert/ && docker exec -it nginx service nginx force-reload"
Copied!
2
3
4
5
6
7
命令参数的含义:
- -d 表示证书所属的域名
- --key-file 复制前面生成的 .key 文件到哪个位置。 一般为 nginx 配置文件中 ssl_certificate_key 指定的路径。
- --fullchain-file 复制前面生成的 fullchain.cer 文件到哪个位置 一般为 nginx 配置文件中 ssl_certificate 指定的路径。
- --reloadcmd 执行完证书文件的复制操作后,还需要执行哪些命令才能将目标证书文件成功配置到 nginx 上。 一般为 service nginx force-reload,强制重新加载配置文件即可启用最新的证书。 该命令就很灵活了,甚至您可以在其它机器上完成证书的安装,然后再远程把证书文件同步到域名所在服务器上。
# 3.2 配置nginx
修改nginx配置文件,开启443端口, 配置证书路径。
配置方法详见nginx配置https (opens new window)。 修改完成后,执行service nginx force-reload
重新加载配置。
那么,您的网站支持https访问了。
# 4. 自动续期
acme.sh 已经自动安装了定时任务, 如下:
[root@iZ2ze7011et12xez70sp3dZ ~]# crontab -l
10 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
[root@iZ2ze7011et12xez70sp3dZ ~]#
Copied!
2
3
4
5
6
该定时任务会每日定时检查 1 次,如果证书更新时间已到,则会自动更新并安装证书。 可以通过acme.sh --list命令查看证书的下次更新时间(见 Renew 列)。
此处提到的证书更新时间和证书到期时间并非同一个概念,证书更新时间指的是执行证书更新的时间,而证书到期时间表示到了该时间后证书无效而导致无法通过 https 访问服务。
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
sofineday.com "" *.sofineday.com LetsEncrypt.org 2020年 11月 03日 星期二 02:29:41 UTC 2021年 01月 02日 星期六 02:29:41 UTC
[root@iZ2ze7011et12xez70sp3dZ ~]#
Copied!
2
3
4
5
6
7
我们先手工执行下定时任务的命令"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh"
,看下输出什么内容:
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
sofineday.com "" *.sofineday.com LetsEncrypt.org 2020年 11月 03日 星期二 08:44:52 UTC 2021年 01月 02日 星期六 08:44:52 UTC
[root@iZ2ze7011et12xez70sp3dZ ~]# "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh"
[2020年 11月 03日 星期二 17:20:16 CST] ===Starting cron===
[2020年 11月 03日 星期二 17:20:16 CST] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 7
[2020年 11月 03日 星期二 17:20:16 CST] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 7
[2020年 11月 03日 星期二 17:20:16 CST] Installing from online archive.
[2020年 11月 03日 星期二 17:20:16 CST] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[2020年 11月 03日 星期二 17:20:22 CST] Extracting master.tar.gz
[2020年 11月 03日 星期二 17:20:23 CST] Installing to /root/.acme.sh
[2020年 11月 03日 星期二 17:20:23 CST] Installed to /root/.acme.sh/acme.sh
[2020年 11月 03日 星期二 17:20:23 CST] Good, bash is found, so change the shebang to use bash as preferred.
[2020年 11月 03日 星期二 17:20:23 CST] OK
[2020年 11月 03日 星期二 17:20:23 CST] Install success!
[2020年 11月 03日 星期二 17:20:24 CST] Upgrade success!
[2020年 11月 03日 星期二 17:20:24 CST] Auto upgraded to: 2.8.8
[2020年 11月 03日 星期二 17:20:24 CST] Renew: 'mydomain.com'
[2020年 11月 03日 星期二 17:20:24 CST] 'mydomain.com' is not an issued domain, skip.
[2020年 11月 03日 星期二 17:20:24 CST] Skipped mydomain.com
[2020年 11月 03日 星期二 17:20:24 CST] Renew: 'sofineday.com'
[2020年 11月 03日 星期二 17:20:24 CST] Skip, Next renewal time is: 2021年 01月 02日 星期六 08:44:52 UTC
[2020年 11月 03日 星期二 17:20:24 CST] Add '--force' to force to renew.
[2020年 11月 03日 星期二 17:20:24 CST] Skipped sofineday.com
[2020年 11月 03日 星期二 17:20:24 CST] ===End cron===
[root@iZ2ze7011et12xez70sp3dZ ~]#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
可以看出,默认情况下,需要到了预定的时间 2021 年 01 月 02 日 星期六 08:44:52 UTC(见 Renew 列,默认为证书生成后的 60 天,也可以自定义,前文有描述), 才会自动更新证书。若想强制更新证书,则需要增加--force 参数,见下一节的内容手动更新证书 (opens new window)
# 5. 手动更新证书
手动更新证书有多种方式:
- 通过 acme.sh 的 renew 指令
- 通过定时任务执行
# 5.1 通过 acme.sh 的 renew 指令
通过 renew 指令会比第 2 种方式更灵活。可以单独更新某个证书,也可以更新所有证书。
- 单独更新某个证书
acme.sh --renew --domain sofineday.com
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --renew --domain sofineday.com
[2020年 11月 03日 星期二 18:01:38 CST] Renew: 'sofineday.com'
[2020年 11月 03日 星期二 18:01:38 CST] Skip, Next renewal time is: 2021年 01月 02日 星期六 08:44:52 UTC
[2020年 11月 03日 星期二 18:01:38 CST] Add '--force' to force to renew.
[root@iZ2ze7011et12xez70sp3dZ ~]#
Copied!
2
3
4
5
6
7
8
因为更新时间没有到,所以没有执行更新操作。若想强制更新,则追加--force 参数:
acme.sh --renew --domain sofineday.com --force
执行过程如下:
[2020 年 11 月 03 日 星期二 18:03:22 CST] Renew: 'sofineday.com'
[2020 年 11 月 03 日 星期二 18:03:23 CST] Using CA: https://acme-v02.api.letsencrypt.org/directory
[2020 年 11 月 03 日 星期二 18:03:23 CST] Multi domain='DNS:sofineday.com,DNS:_.sofineday.com'
[2020 年 11 月 03 日 星期二 18:03:23 CST] Getting domain auth token for each domain
[2020 年 11 月 03 日 星期二 18:03:30 CST] Getting webroot for domain='sofineday.com'
[2020 年 11 月 03 日 星期二 18:03:30 CST] Getting webroot for domain='_.sofineday.com'
[2020 年 11 月 03 日 星期二 18:03:31 CST] sofineday.com is already verified, skip dns-01.
[2020 年 11 月 03 日 星期二 18:03:31 CST] _.sofineday.com is already verified, skip dns-01.
[2020 年 11 月 03 日 星期二 18:03:31 CST] Verify finished, start to sign.
[2020 年 11 月 03 日 星期二 18:03:31 CST] Lets finalize the order.
[2020 年 11 月 03 日 星期二 18:03:31 CST] Le*OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/101071293/6015050649'
[2020 年 11 月 03 日 星期二 18:03:33 CST] Downloading cert.
[2020 年 11 月 03 日 星期二 18:03:33 CST] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/046a3b81d368232ac6da38c1db0bd803fafc'
[2020 年 11 月 03 日 星期二 18:03:34 CST] Cert success.
-----BEGIN CERTIFICATE-----
MIIFZDCCBEygAwIBAgISBGo7gdNoIyrG2jjB2wvYA/r8MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDExMDMwOTAzMzNaFw0y
MTAyMDEwOTAzMzNaMBgxFjAUBgNVBAMTDXNvZmluZWRheS5jb20wggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDfAdIati/JZFCEMmTXD4j2UgOwKbKynjHk
ghcW0wA+YyNvIW/Y/kmN4fMk3qEslG6l/XXZ0Lv1IYYStRY70BlUUsHsJ/K/Mu0O
+EFcCBOfggOoZ8J6RCP1tU/erTq2JJTiWNmlQSqCq92SyJJvVdYYOBRrlMuxtBba
8pPLjcpxeSO4iEqlNJh+VJNJE1Loh3X77zRBkLwlsetcI/DwKEn670M01l61XMG1
QMX8RRkp+O4J8Hy6SJlEFv1a320pZJ9IA5D3x8YpgvKJzb5043aN0gPBJ37MVtJq
Mw4NBh9gLk8JKNgbNgJPkJypggLXmGYiLLaFIZEPcoDtjF+xdQ+1AgMBAAGjggJ0
MIICcDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF
BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFORKHDj/oRKs5nweoobwEffhV0T0
MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsGAQUFBwEBBGMw
YTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y
ZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNlbmNyeXB0Lm9y
Zy8wKQYDVR0RBCIwIIIPKi5zb2ZpbmVkYXkuY29tgg1zb2ZpbmVkYXkuY29tMEwG
A1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEW
Gmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBBQYKKwYBBAHWeQIEAgSB9gSB
8wDxAHYA9lyUL9F3MCIUVBgIMJRWjuNNExkzv98MLyALzE7xZOMAAAF1jY/NuAAA
BAMARzBFAiEAmaVBTxlQ47FYowMBQZyHKilgT46kA/Ud/YdHLV9zO3ECIBO2v0+T
A4JWbub/BvJZXSOD84xXtiiZAMGz2LfP3bVhAHcAb1N2rDHwMRnYmQCkURX/dxUc
EdkCwQApBo2yCJo32RMAAAF1jY/OEQAABAMASDBGAiEA3quHKHc/28EMK3KMTqZU
xKPEgO4N0g3P+rR6qW8B7YMCIQCDq/146h+GYWrO52U6Ey3M4AfOLxf3IHDya9fl
jYV/ETANBgkqhkiG9w0BAQsFAAOCAQEAmNORzZu1BwiXup3TIzASl/odXVhsJF/I
MXqMDSXR8cuafkralwCYy/ewh4vcgcZSfd0XCS/xPHDKZ5MeaKSh8enchH2WD6+G
Xyf8c4pWWdGKWqKxyPcX+5+hWvbzg/3SL7uDbBbhV9sRspGhQV4okEbYJvFLAydg
uoYaDiMoHUrjgz9atLcHn6EgHelcv5JcJkVZR+qD2MmZwh5LFZFNkDhGJUOFAUbm
1UDbGTUZt4CFx7ihZ7V9JJ69QQh+2Hub3SQJU3vHpB0pEKH7bBsfIomaWowQa3FQ
j+3GSgudM1QR9EKUhENHTqJ+RXdGu2AFH22W1L25L1Eh0U27g89lZw==
-----END CERTIFICATE-----
[2020 年 11 月 03 日 星期二 18:03:34 CST] Your cert is in /root/.acme.sh/sofineday.com/sofineday.com.cer
[2020 年 11 月 03 日 星期二 18:03:34 CST] Your cert key is in /root/.acme.sh/sofineday.com/sofineday.com.key
[2020 年 11 月 03 日 星期二 18:03:34 CST] The intermediate CA cert is in /root/.acme.sh/sofineday.com/ca.cer
[2020 年 11 月 03 日 星期二 18:03:34 CST] And the full chain certs is there: /root/.acme.sh/sofineday.com/fullchain.cer
[2020 年 11 月 03 日 星期二 18:03:34 CST] Installing key to:/data/docker-service/nginx/cert/*.sofineday.com.private.key
[2020 年 11 月 03 日 星期二 18:03:34 CST] Installing full chain to:/data/docker-service/nginx/cert/*.sofineday.com.full_chain.pem
[2020 年 11 月 03 日 星期二 18:03:34 CST] Run reload cmd: docker cp /data/docker-service/nginx/cert/*.sofineday.com.private.key nginx:/etc/nginx/cert/ && docker cp /data/docker-service/nginx/cert/\_.sofineday.com.full_chain.pem nginx:/etc/nginx/cert/ && docker exec -it nginx service nginx force-reload
[ ok ] Reloading nginx: nginx.
[2020 年 11 月 03 日 星期二 18:03:35 CST] Reload success
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
sofineday.com "" _.sofineday.com LetsEncrypt.org 2020 年 11 月 03 日 星期二 10:03:34 UTC 2021 年 01 月 02 日 星期六 10:03:34 UTC
[root@iZ2ze7011et12xez70sp3dZ ~]#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
- 更新所有证书 用法同单独更新某个证书类似,只需将参数名改为--renew-all:
acme.sh --renew-all
强制更新:acme.sh --renew-all --force
# 5.2 通过定时任务执行
acme 内部维护着一个定时任务,到达指定时间(见 acme.sh --list 输出的 Renew 列),则会更新证书。 若您想在证书过期之前,提前更新证书,则执行如下命令即可: acme.sh --cron --force
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --list
Main*Domain KeyLength SAN_Domains CA Created Renew
sofineday.com "" *.sofineday.com LetsEncrypt.org 2020 年 11 月 03 日 星期二 02:29:41 UTC 2021 年 01 月 02 日 星期六 02:29:41 UTC
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --cron --force
[2020 年 11 月 03 日 星期二 16:44:33 CST] ===Starting cron===
[2020 年 11 月 03 日 星期二 16:44:33 CST] Installing from online archive.
[2020 年 11 月 03 日 星期二 16:44:33 CST] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[2020 年 11 月 03 日 星期二 16:44:41 CST] Extracting master.tar.gz
[2020 年 11 月 03 日 星期二 16:44:41 CST] Installing to /root/.acme.sh
[2020 年 11 月 03 日 星期二 16:44:41 CST] Installed to /root/.acme.sh/acme.sh
[2020 年 11 月 03 日 星期二 16:44:41 CST] Good, bash is found, so change the shebang to use bash as preferred.
[2020 年 11 月 03 日 星期二 16:44:42 CST] OK
[2020 年 11 月 03 日 星期二 16:44:42 CST] Install success!
[2020 年 11 月 03 日 星期二 16:44:43 CST] Upgrade success!
[2020 年 11 月 03 日 星期二 16:44:43 CST] Auto upgraded to: 2.8.8
[2020 年 11 月 03 日 星期二 16:44:43 CST] Renew: 'mydomain.com'
[2020 年 11 月 03 日 星期二 16:44:43 CST] 'mydomain.com' is not an issued domain, skip.
[2020 年 11 月 03 日 星期二 16:44:43 CST] Skipped mydomain.com
[2020 年 11 月 03 日 星期二 16:44:43 CST] Renew: 'sofineday.com'
[2020 年 11 月 03 日 星期二 16:44:45 CST] Using CA: https://acme-v02.api.letsencrypt.org/directory
[2020 年 11 月 03 日 星期二 16:44:45 CST] Multi domain='DNS:sofineday.com,DNS:_.sofineday.com'
[2020 年 11 月 03 日 星期二 16:44:45 CST] Getting domain auth token for each domain
[2020 年 11 月 03 日 星期二 16:44:49 CST] Getting webroot for domain='sofineday.com'
[2020 年 11 月 03 日 星期二 16:44:49 CST] Getting webroot for domain='_.sofineday.com'
[2020 年 11 月 03 日 星期二 16:44:49 CST] sofineday.com is already verified, skip dns-01.
[2020 年 11 月 03 日 星期二 16:44:49 CST] _.sofineday.com is already verified, skip dns-01.
[2020 年 11 月 03 日 星期二 16:44:49 CST] Verify finished, start to sign.
[2020 年 11 月 03 日 星期二 16:44:49 CST] Lets finalize the order.
[2020 年 11 月 03 日 星期二 16:44:49 CST] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/101071293/6014120473'
[2020 年 11 月 03 日 星期二 16:44:51 CST] Downloading cert.
[2020 年 11 月 03 日 星期二 16:44:51 CST] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/0397895ff02c722b847007f4dbd979eda735'
[2020 年 11 月 03 日 星期二 16:44:52 CST] Cert success.
-----BEGIN CERTIFICATE-----
MIIFYzCCBEugAwIBAgISA5eJX/AsciuEcAf029l57ac1MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDExMDMwNzQ0NTBaFw0y
MTAyMDEwNzQ0NTBaMBgxFjAUBgNVBAMTDXNvZmluZWRheS5jb20wggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDfAdIati/JZFCEMmTXD4j2UgOwKbKynjHk
ghcW0wA+YyNvIW/Y/kmN4fMk3qEslG6l/XXZ0Lv1IYYStRY70BlUUsHsJ/K/Mu0O
+EFcCBOfggOoZ8J6RCP1tU/erTq2JJTiWNmlQSqCq92SyJJvVdYYOBRrlMuxtBba
8pPLjcpxeSO4iEqlNJh+VJNJE1Loh3X77zRBkLwlsetcI/DwKEn670M01l61XMG1
QMX8RRkp+O4J8Hy6SJlEFv1a320pZJ9IA5D3x8YpgvKJzb5043aN0gPBJ37MVtJq
Mw4NBh9gLk8JKNgbNgJPkJypggLXmGYiLLaFIZEPcoDtjF+xdQ+1AgMBAAGjggJz
MIICbzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF
BwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFORKHDj/oRKs5nweoobwEffhV0T0
MB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsGAQUFBwEBBGMw
YTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9y
ZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNlbmNyeXB0Lm9y
Zy8wKQYDVR0RBCIwIIIPKi5zb2ZpbmVkYXkuY29tgg1zb2ZpbmVkYXkuY29tMEwG
A1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEW
Gmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB9QSB
8gDwAHUAlCC8Ho7VjWyIcx+CiyIsDdHaTV5sT5Q9YdtOL1hNosIAAAF1jUe+ngAA
BAMARjBEAiBmEQew/ZTGak523Jesy31aSBCy03TbSmOaEIS7C9ez9AIgRfaJXCtF
G6WXDnpqsDu04MkWvBa7ykB+7TmYe2n9f34AdwB9PvL4j/+IVWgkwsDKnlKJeSvF
DngJfy5ql2iZfiLw1wAAAXWNR77gAAAEAwBIMEYCIQCMo0BVA8eflzxz6xJsuUTe
TG2LPIXqPB+TVPEDAZLBRQIhALcjTfd4i4evNxbWSzXg2X/0pYpho+RGmtW8tUR7
edqUMA0GCSqGSIb3DQEBCwUAA4IBAQBKJRQMmLfgs+tyk4vP4k854OWYZzi4dzD9
UO7bLIroQyS2V26mX7MNr35G5+KRpHtXOy5VYOePh1AgQSkJfi0v6efNlPVQ+Kub
iANsqQHcoDmnfPz9/iPIQ2O9ei1oD/Rkx0zBKXrzOlpf7vezreTFbXOuhbD5EwSc
q+70BQ4LRU7+29MLStjlBp0NGZeiMh3MjtcNtnryK2d4zwzWQKuAY+gKHPYof5M1
11d+5vYEFC/wfuZUMMcNhGeJcxr/nAn+0j+7ok9iirijkuhe5/vI2XOF/e9BYCch
TK4w/d0Q7x7yW87NjqEly27nhpUqIhGYNUNWZ325MIvCr3GoDm/h
-----END CERTIFICATE-----
[2020 年 11 月 03 日 星期二 16:44:52 CST] Your cert is in /root/.acme.sh/sofineday.com/sofineday.com.cer
[2020 年 11 月 03 日 星期二 16:44:52 CST] Your cert key is in /root/.acme.sh/sofineday.com/sofineday.com.key
[2020 年 11 月 03 日 星期二 16:44:52 CST] The intermediate CA cert is in /root/.acme.sh/sofineday.com/ca.cer
[2020 年 11 月 03 日 星期二 16:44:52 CST] And the full chain certs is there: /root/.acme.sh/sofineday.com/fullchain.cer
[2020 年 11 月 03 日 星期二 16:44:52 CST] Installing key to:/data/docker-service/nginx/cert/_.sofineday.com.private.key
[2020 年 11 月 03 日 星期二 16:44:52 CST] Installing full chain to:/data/docker-service/nginx/cert/_.sofineday.com.full_chain.pem
[2020 年 11 月 03 日 星期二 16:44:52 CST] Run reload cmd: docker cp /data/docker-service/nginx/cert/_.sofineday.com.private.key nginx:/etc/nginx/cert/ && docker cp /data/docker-service/nginx/cert/\_.sofineday.com.full_chain.pem nginx:/etc/nginx/cert/ && docker exec -it nginx service nginx force-reload
[ ok ] Reloading nginx: nginx.
[2020 年 11 月 03 日 星期二 16:44:53 CST] Reload success
[2020 年 11 月 03 日 星期二 16:44:53 CST] ===End cron===
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
sofineday.com "" \*.sofineday.com LetsEncrypt.org 2020 年 11 月 03 日 星期二 08:44:52 UTC 2021 年 01 月 02 日 星期六 08:44:52 UTC
[root@iZ2ze7011et12xez70sp3dZ ~]#
Copied!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# 6. 查看证书列表
执行如下命令,查看证书列表 ~/.acme.sh/acme.sh --list
[root@iZ2ze7011et12xez70sp3dZ ~]# acme.sh --list
Main_Domain KeyLength SAN_Domains CA Created Renew
sofineday.com "" \*.sofineday.com LetsEncrypt.org 2020 年 11 月 03 日 星期二 02:29:41 UTC 2021 年 01 月 02 日 星期六 02:29:41 UTC
[root@iZ2ze7011et12xez70sp3dZ ~]#
Copied!
2
3
4
5
6
7
8
Created 表示申请时间, Renew表示下次执行证书更新的时间。
# 7. 删除证书
acme.sh --remove --domain sofineday.com
将域名换成实际域名即可
# 8. 更新 acme.sh
由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步。 升级 acme.sh 到最新版:
acme.sh --upgrade
Copied!
2
3
4
5
如果您不想手动升级,,可以开启自动升级:
acme.sh --upgrade --auto-upgrade
Copied!
2
3
4
5
您也可以随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0
Copied!
2
3
4
5
# 9. 检测网站的安全级别
可以使用如下网站检测网站的安全级别:
- https://myssl.com
# 10. 其它资料
# freessl.cn官方提供的证书自动续期方案
发现freessl.cn总结了一套”支持https证书自动续期“的文档,但经过我的实际操作发现,生成证书时一直失败并最终退出(尝试过多次)。所以并没有见得比我之前总结的方法好。但是可以作为拓展资料,见ACME v2证书自动化快速入门 (opens new window) (opens new window)。 该套方案实际上是使用freessl.cn创建的CA服务器来生成证书。
操作步骤:
- 访问https://freessl.cn
- 输入域名
- 选择带有
多域名通配符(有效期:自动续期)
标志的亚洲诚信厂商 - 点击
创建免费的ssl证书
- 按提示操作即可
- 02
- 常用服务(Redis、RabbitMQ等)Docker启动指引09-28
- 03
- Redis为什么快?09-07