首页 专题 文章 代码 归档

[SSL]使用acme.sh获取let's的ssl

1. 前言

当时测试好了的时候,忘记写文章了,现在是补的,我也不能再来一遍,只能网上找点资料,然后凭记忆写一下,当个备忘

2. 步骤

2.1. 安装acme.sh

curl  https://get.acme.sh | sh

安装完毕后,刷新环境变量,然后输入“ acme.sh ”,看看会不会报错,不会的话就没有问题

source ~/.bash_profile ~/.bashrc # 刷新环境变量

2.2. 域名解析

需要先在阿里云新建一个授权用户,

然后该用户有权限增删改查dns解析

然后获取到key和secret,替换下面的参数

# 替换成从阿里云获取的 API 参数
export Ali_Key="666"
export Ali_Secret="666"
# 换成自己的域名
acme.sh --issue --dns dns_ali -d ujuji.com -d *.ujuji.com

这里我们是增加了泛解析“*.ujuji.com”,但是使用泛解析,需要有一个根,也即前面的“-d ujuji.com”

这样我们就获取到了证书(如果前面步骤没错的话

Nginx还需要配置,以上只是获取到证书了,下面需要颁发证书:

acme.sh  --installcert  -d  xxx.com   \
        --key-file   /usr/local/nginx/conf/ssl/xxx.com/xxx.com.key \
        --fullchain-file /usr/local/nginx/conf/ssl/xxx.com/xxx.com.cer

上面的两个两个路径就是你的正要放的路径,而不是已经申请到的路径(默认的是~/.acme.sh/xxxx)

唯一需要注意的是,就是xxx.com是你上一步申请到的域名

[Sat Oct 10 17:59:56 CST 2020] Installing key to:/usr/local/nginx/conf/ssl/xxx.comxxx.com.key
[Sat Oct 10 17:59:56 CST 2020] Installing full chain to:/usr/local/nginx/conf/ssl/xxx.com/xxx.com.cer

如果没报错的话,就会显示如上的提示,这样证书就被复制到了/usr/local/nginx/conf/ssl/

这样做的好处就是可以自动更新ssl

2.3. Nginx配置

这里附上Nginx的参考配置:

server {
    listen       443 ssl http2;
    server_name  www.blestgirl.top;

    ssl_certificate vhosts/***.fullchain.cer; #通过acme申请的位置,上一步最好会告诉你(绿色显示)
    ssl_certificate_key vhosts/***.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

另外,需要说的是,如果你使用的是宝塔的话,那么:

生成的fullchain.cer对应宝塔需要的证书(PEM格式)

生成的xx.xx.key对应宝塔需要的密钥(KEY)

2.4. 自动更新

由于let's 的证书协议极易更新,导致acme工具不能正常使用,而导致续签失败,所以可以自动更新:

acme.sh --upgrade --auto-upgrade
此文阅读完毕,您可以:分享
二维码图片 扫描关注我们哟