• 欢迎访问春风博客

使用 acme.sh 部署 Let’s Encrypt 泛域名通用证书

运维笔记 xiaogang 2年前 (2022-07-06) 1337次浏览 0个评论

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配置使证书生效。


ChunBlog.Com , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用 acme.sh 部署 Let’s Encrypt 泛域名通用证书
喜欢 (24)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址