2023-11-16    2023-11-16    501 字  1 分钟
web

自动证书管理环境(英语:Automatic Certificate Management Environment,缩写 ACME)是一种通信协议,用于证书颁发机构与其用户的 Web 服务器之间的自动化交互,允许以极低成本自动化部署公钥基础设施。我们可以使用ACME为我们的网站签发证书。

由于ACME签发证书有效期仅有90天,生产环境慎用。

环境

操作系统:CentOS 7

域名解析:阿里云DNS解析服务

安装ACME

安装 acme,邮箱根据实际情况进行修改。

1
wget -O -  https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh -s -- --install-online -m  my@example.com

更详细的安装过程请参考官方教程

查看acme版本

1
2
3
4
cd ~/.acme.sh/
./acme.sh --version
https://github.com/acmesh-official/acme.sh
v3.0.7

安装完成后会生成crontab定时任务,以检查证实是否过期,是否需要续签等。这个定时任务的时间是随机的,不影响主要功能。

1
2
crontab -l
30 19 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

阿里云

阿里云创建子账户,创建成功后,记录用户的AccessKey IDAccessKey Secret

image-20231116124858606

针对用户授权,具体权限如下图。

image-20231116130143451

配置ACME并签发证书

修改 ~/.acme.sh/dnsapi/dns_ali.sh 文件,修改 Ali_KeyAli_Secret

1
2
3
4
5
6
7
[root@blog ~]# head -6 ~/.acme.sh/dnsapi/dns_ali.sh
#!/bin/bash

Ali_API="https://alidns.aliyuncs.com/"

Ali_Key="LTAI5tCQ7D7C4WRBp5HLv2MW"
Ali_Secret="71PC9hCNw8Cc0ThKwGSe7OJ6BQgT0F"

签发证书

1
./acme.sh --issue --dns dns_ali -d snoopyops.top -d *.snoopyops.top

签发成功后,会在~/.acme.sh/下生产域名目录。

验证

配置证书,并重载 nginx

1
2
3
4
5
6
cp /root/.acme.sh/snoopyops.top_ecc/snoopyops.top.cer /etc/nginx/cert/
cp /root/.acme.sh/snoopyops.top_ecc/snoopyops.top.key /etc/nginx/cert/

# nginx配置
ssl_certificate      /etc/nginx/cert/snoopyops.top.cer;
ssl_certificate_key  /etc/nginx/cert/snoopyops.top.key;

验证证书

image-20231116131759642


image-20231028232834657