nginx使用acme.sh脚本配置letsencrypt ssl证书

先说下背景:certbot依赖太旧

2020年之后Python2 安全不支持 不能再用了,

网站用的是letsencrypt免费证书,letsencrypt官方推荐acme客户端是Certbot

但是Certbot 在nginx on centos7上用的是 python2-certbot-nginx ,基于Python2的,(看了下centos8是使用的python3的,但是更新到8代价有点大)

所以cerbot也用不得了

 解决方案:acme.sh

在官方客户端列表里发现了一个用shell实现的:acme.sh 现在(2020年09月09日)有19K star

直接使用DNS方式生成泛域名证书,这里使用acme.sh配置let'sencrypt网址证书,过程如下(请以官网文档为主)

1安装 参照官网 安装

2配置dns 找到自动的域名供应商添加dnsapi key secret

3生成证书把证书安装到指定位置

4配置nginx 只需要在原来的80 server的基础上更改443端口并添加证书配置就可以了,见下方红色代码部分

    server {
        listen 443;
        server_name localhost;

        ssl on;
        index index.html index.htm;
        ssl_certificate   /上一步你安装的位置/fullchain.cer;
        ssl_certificate_key  /上一步你安装的位置/clsn.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        root html;
        location / {
            root html;
            index index.html index.htm;
        }
    }

5 重启nginx  :    service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload

done

原文地址:https://www.cnblogs.com/timseng/p/13638539.html