200810-acme.sh 快速实现https证书颁发与自动续期

文章目录
  1. I. 安装步骤
    1. 1. 登录服务器
    2. 2. 安装acme.sh
    3. 3. 申请密钥
    4. 4. 证书生成
    5. 5. 安装证书
    6. 6. nginx配置
  2. II. 其他
    1. 1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
    2. 2. 声明
    3. 3. 扫描关注

借助acem.sh来迅速实现let’s encrypt的泛域名ssl证书颁发与续期,基本上五分钟就可以解决战斗

本文主要内容来自acme.sh的官方wiki,一切以官方说明为准: acme wiki

I. 安装步骤

1. 登录服务器

登录到某台linux服务器,我这里以Centos举例说明

1
2
3
4
ssh xxx@xxx

# 切换root账号
su

2. 安装acme.sh

1
2
3
yum install socat -y
curl https://get.acme.sh | sh
cd ~/.acme.sh/

3. 申请密钥

到域名购买服务商,申请api key,用于后期的txt记录验证

DNSPod

密钥申请完毕之后,如下操作导入命令

1
2
3
# DNSPod
export DP_Id="id"
export DP_Key="key"

阿里云

ALY_KEY 和 ALY_TOKEN:阿里云 API key 和 Secrec 官方申请文档

申请完毕之后,如下操作

1
2
export Ali_Key="key"
export Ali_Secret="secret"

godaddy

1
2
export GD_Key="key"
export GD_Secret="secret"

其他

至于其他平台,应该如何导入API key,可以参考下面的文档,这里不一一说明了

4. 证书生成

1
2
3
4
5
6
# 请注意,--dns后面的参数,一般来讲后缀就是上面的导入key的前缀
# 如果不确定,到上面的github连接中去找

# 针对 hhui.top 域名生成通配的证书
# 在我的测试中,如果只指定 -d *.hhui.top ,那么生成的证书没有包含 hhui.top 这个主域名,所以当我希望这个证书都能包含时,第一个填写主域名
./acme.sh --issue --dns dns_ali -d hhui.top -d *.hhui.top

证书生成之后,会在.acme.sh目录下,新生成一个 *.hhui.top(就是我们上面指定的通配域名) 文件夹,证书在里面

5. 安装证书

接下来将我们的证书安装到nginx(当然也可以是tomcat),下面的脚本除了安装之外,也添加了一个自动更新的任务(一般来说,60 天以后会自动更新,并会强制重启nginx使新的证书生效,可以通过 crontab -e看到对应的定时任务)

1
./acme.sh  --installcert -d *.hhui.top --key-file /etc/nginx/ssl/key.pem  --fullchain-file /etc/nginx/ssl/cert.pem --reloadcmd     "service nginx force-reload"

6. nginx配置

然后就是配置nginx,支持https

下面是一个基础的nginx配置实例

1
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
server {
server_name blog.hhui.top;
root /home/yihui/xxx;
index index.html;

gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_vary on;

location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
access_log off;
expires 1d;
}

location ~* ^.+\.(css|js|txt|xml|swf|wav|pptx)$ {
access_log off;
expires 10m;
}

location / {
try_files $uri $uri/ @router;
}

location @router {
rewrite ^.*$ /index.html last;
}

listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 1.1.1.1 valid=60s;
resolver_timeout 2s;
}

server {
if ($host = blog.hhui.top) {
return 301 https://$host$request_uri;
}

listen 80;
server_name blog.hhui.top;
return 404;
}

II. 其他

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

QrCode

# ssl

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×