免费自动续签ssl证书

一:国内现状

从今年4月份开始,阿里云和腾讯云提供免费的SSL证书有效期只有3个月,我如何找一款安全,可靠,开源,免费的SSL证书呢, Let’s Encrypt 正是其中一家证书颁发机构
二:如何操作
1.安装 acme.sh

curl https://get.acme.sh | sh -s email=my@example.com

这里邮件地址改一下,由于这个要访问github,国内服务器很多无法访问,提供另一种方法

git clone https://gitee.com/neilpang/acme.sh.git
cd  acme.sh
./acme.sh --install -m my@example.com

安装不下来的就需要开白名单,因为要访问github和一些国外的网站,记住你的安装位置,一般是在/root/.acme.sh下面,下面启动要用到这个命令

2.签发证书

打开nginx的配置文件,一般在/etc/nginx下面 ,把下面的配置放进去,并且记住这个root的根目录

server {
    listen 80;
    server_name 你的域名;

    charset utf-8;

    # 站点根目录
    root /usr/share/nginx/html;

    # 处理 Let's Encrypt ACME challenge 请求
    location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";  # 设置返回的文件类型为纯文本
        root /usr/share/nginx/html;  # 确保挑战文件保存在此目录
    }
}

配置完成之后如何验证这个路径是可以访问的,确保证书可以下发,用下面这几条命令测试一下

mkdir -p /usr/share/nginx/html/.well-known/acme-challenge/

echo "This is a test file" > /usr/share/nginx/html/.well-known/acme-challenge/testfile.txt

chmod -R 755 /usr/share/nginx/html/.well-known

http://域名/.well-known/acme-challenge/testfile.txt

第一种签发方式:http直接签发 -w路径就是上面的root后面的目录 ,这样写是因为往这个地址下面发送token进行验证

例如:/root/.acme.sh/acme.sh --issue -d www.baidu.com -w /usr/share/nginx/html

/root/.acme.sh/acme.sh --issue -d 你的域名 -w /usr/share/nginx/html

如果此时报错,出现下面这个,说明 服务器是 ZeroSSL类型换一下就行
在这里插入图片描述
如果这里报另一种错,这个就是说你的域名DNS解析部署A类型,需要去阿里云或者Cloudflare上面做DNS解析
在这里插入图片描述

/root/.acme.sh/acme.sh --set-default-ca --server letsencrypt

在这里插入图片描述

然后重新执行颁发命令,下面这个就成功了
在这里插入图片描述

第二种签发方式:需要开通nginx的80端口

acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com

这个可能会报各种错,400,403,404,等一系列错误,都是80端口的问题

三:配置到nginx中然后自动更新

前面证书签发成功之后,我们需要创建一个目录来存放证书

mkdid /etc/nginx/tls

配置nginx,证书到期自动更新

/root/.acme.sh/acme.sh --install-cert -d 域名 \
--key-file       /etc/nginx/tls/key.pem  \
--fullchain-file /etc/nginx/tls/cert.pem \
--reloadcmd     "/usr/sbin/nginx -s reload"

最后需要到nginx的配置文件中修改ssl证书位置

ssl_certificate /etc/nginx/tls/cert.pem;

ssl_certificate_key /etc/nginx/tls/key.pem;

四:验证自动更新

crontab -e

使用这个命令会看到里面有一条自动执行的脚本,修改一下,这样就有日志了

32 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" >> /root/acme_cron.log 2>&1

使用命令强制执行一次,更新ssl证书

/root/.acme.sh/acme.sh --cron --home "/root/.acme.sh" >> /root/acme_cron.log 2>&1

查看日志,会告诉你证书是新的,无需更新

tail -f /root/acme_cron.log

在这里插入图片描述
参考:github地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值