Let’s Encrypt两种域名验证方式
1. DNS验证:配置一个随机的 TXT 记录来验证
2. 文件验证:配置一个随机的 URL 地址来验证
泛域名通用证书只能使用DNS TXT记录验证,acme.sh支持多种dnsapi我使用的是阿里云DNS,可以根据你的域名服务商进行选择支持列表。
安装 acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
my@example.com 改为你自己的邮箱地址用于接收通知。
acme.sh自动为你创建定时任务, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。
配置阿里云AK
设置临时系统变量
#你的阿里云AccessKeyId export Ali_Key="AccessKeyId" #你的AccessKeySecret export Ali_Secret="AccessKeySecret"
颁发证书
可以进行单域名、多域名、泛域名进行颁发。
acme.sh --issue --dns dns_ali -d chunblog.com -d *.chunblog.com
这里会使用dnsapi自动添加TXT记录,进行域名的 DNS 验证,中间会等待 2分钟左右来验证正确性,验证完成后记录会自动删除。
出现Cert success表示成功 后面会有证书存放路径。
复制/安装证书
Nginx
acme.sh --dns dns_ali -d chunblog.com -d *.chunblog.com\ --install-cert\ --key-file /www/cert/chunblog.com/key.pem\ --fullchain-file /www/cert/chunblog.com/cert.pem\ --reloadcmd "/etc/init.d/nginx reload"
参数说明
–install-cert 将颁发的证书安装到 apache/nginx 或任何其他服务器。
–key-file 发行/续订后将密钥文件复制到的路径。
–fullchain-file 发布/续订后将全链证书文件复制到的路径。
–reloadcmd 发布/更新后重新加载服务器后要执行的命令
然后修改Nginx配置文件使用 /www/cert/chunblog.com/key.pem、/www/cert/chunblog.com/cert.pem即可
server
{
listen 80;
listen 443 ssl http2;
server_name chunblog.com www.chunblog.com;
index index.php index.html index.htm;
root /www/chunblog.com;
ssl_certificate /www/server/panel/vhost/cert/chunblog.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/chunblog.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/chunblog.com.log;
error_log /www/wwwlogs/chunblog.com.error.log;
}
安装acme.sh时已自动创建定时任务,证书到期前会自动更新证书并重载Nginx配置使证书生效。

