acme.sh免费自动更新https证书

一、前言

本文旨在提供免费更新https证书的方案,原本使用的是certbot-auto,由于certbot-auto已被弃用,寻找了acme.sh来解决配置https的问题。

二、sh-acme

1.安装acme

1.1.下载acme

    github比较慢,可用github.com.cnpmjs.org代替

git clone https://github.com.cnpmjs.org/acmesh-official/acme.sh

1.2.配置安装

./acme.sh --install  --home ~/zhihao_myacme --config-home ~/zhihao_myacme/data --cert-home  ~/zhihao_mycerts --accountemail  "zhihao@objectmail.com" --accountkey  ~/zhihao_myaccount.key --accountconf ~/zhihao_myaccount.conf

说明:

–home 是要安装的自定义目录acme.sh。默认情况下,它安装到~/.acme.sh
–config-home 是一个可写文件夹,acme.sh将在其中写入所有文件(包括cert / keys,configs)。默认情况下–home
–cert-home 是自定义的目录,用于保存您颁发的证书。默认情况下,它保存在中–config-home。
–accountemail是用于向Let’s Encrypt注册帐户的电子邮件,您将在此处收到续订通知电子邮件。默认为空。
–accountkey 是保存您帐户私钥的文件。默认情况下,它保存在中–config-home。
–useragent 是用于发送到“让我们加密”的用户代理标头值

2.生成证书

acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证.,本文主要讲http+nginx方式


 2.1http 方式需要验证你的域名所有权,它会在你域名根目录下的/.well-known/acme-challenge目录下生成一个文件,再访问校验

(1)配置nginx

server {
    listen      80;
    server_name www.test.com;
 
    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /www/certbot/www.test.com;
 
    }
 
    location / {
        return 301 https://$http_host$request_uri;
    }
}

(2)生成证书

acme.sh  --issue  -d www.test.com  --webroot  /www/certbot/www.test.com/

说明:

 -d 校验域名

–webroot 校验域名生成校验文件目录,与nginx配置的/.well-known/acme-challenge/下目录一致

(3)安装证书

acme.sh --install-cert -d www.test.com \
--key-file  /www/certbot/www.test.com/key.pem \
--fullchain-file /www/certbot/www.test.com/cert.pem \
--reloadcmd  "nginx -s reload"

到这里证书就已经申请完毕,接下来就是配置nginx的httpps配置了

3.配置nginx的https配置

server {
	#ssl 需要监听443端口 
	listen 443 ssl;
	# CA证书对应的域名
	server_name www.test.com;
	# 刚刚安装证书密匙绝对路径
	ssl_certificate  /www/certbot/www.test.com/cert.pem; 
	# 刚刚安装证书key绝对路径 
	ssl_certificate_key  /www/certbot/www.test.com/key.pem;
	# session超时
    ssl_session_timeout 5m;
    # 协议类型
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # ssl算法列表 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    #  是否 服务器决定使用哪种算法  on/off   TLSv1.1 的话需要开启
    ssl_prefer_server_ciphers on;

    location / {
        default_type "text/plain";
        return 200 '配置https成功';
    }
}
# 如果用户通过 http 访问 直接重写 跳转到 https 这个是一个很有必要的操作
server {
	listen       80;
    server_name www.test.com;
    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /www/certbot/where.test.com/;
    }

    location / {
       return 301 https://$http_host$request_uri;
    }
}

重启nginx,直接访问http://www.test.com,会发现链接已跳转https://www.test.com且访问成功。

4.证书更新

    目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.。

其他命令:

手动更新证书:

acme.sh --renew -d www.blscy.cn --force 

查看证书列表:

acme.sh --list

停止renew

acme.sh --remove -d example.com

三、go-acme(lego)

​​​​​​Installation :: Let’s Encrypt client and ACME library written in Go.

lego -d qy.easywork365.com -d pc.easywork365.com -d wx.easywork365.com -d msg.easywork365.com \
--path=/etc/lego --http --http.webroot=/data1/webroot/ew365/qy -m=ljm@sanchi.vip \
-k rsa4096 run

lego -d qy.easywork365.com -d pc.easywork365.com -d wx.easywork365.com -d msg.easywork365.com \
--path=/etc/lego --http --http.webroot=/data1/webroot/ew365/qy -m=ljm@sanchi.vip \
-k rsa4096 renew

    原文作者:share_9527
    原文地址: https://blog.csdn.net/weixin_39682289/article/details/115284029
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞