SSL证书自动生成并自动续期(解决泛域名续签问题)

SSL证书自动生成并自动续期

自动续期使用Let’s Encrypt证书颁发机构和certbot客户端共同完成

Let’s Encrypt

Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构(CA),为公众的利益而运行。它是一项由 Internet Security Research Group(ISRG)提供的服务。我们以尽可能对用户友好的方式免费提供为网站启用 HTTPS(SSL/TLS)所需的数字证书。这是因为我们想要创建一个更安全,更尊重隐私的 Web 环境。

Certbot介绍

Certbot 是 Let’s Encrypt CA(或使用 ACME 协议的任何其他 CA )的功能全面,可扩展的客户端,可以自动执行获取证书和配置 Web 服务器以使用证书的任务

申请ssl证书

下载certbot

百度文章很多,自行百度适合自己的操作系统对应的版本

申请证书

非泛域名
申请证书

使用webroot(其他几种方式大同小异standalone、manual,据说nginx插件方式很好用,还没有尝试过)的方式认证,即certbot会自动在web服务器的根目录下生成一个密钥文件,并通过==http(需要开放80端口)==的方式访问该域名下的该密钥文件

certbot certonly --webroot -w /root/appenv/docker/sclf-general/sclf-general-web-nginx/html -d jcps.sclf.top -d oss.sclf.top -d preview.sclf.top --force-renew

–webroot:指定方式

-w:指定域名的根目录

-d:指定域名

–force-renew:强制生成新的证书

命令执行后注意看日志,会告诉你证书保存在了哪个地方

nginx使用证书

修改nginx配置

server {
        listen       443 ssl;
        server_name  域名;

        ssl_certificate      /xxx/fullchain.pem;
        ssl_certificate_key  /xxx/privkey.pem;
}
证书续期脚本

使用certbot renew命令就可以直接将证书进行续期

编写自动续期的脚本

#!/usr/bin/env bash

echo start renew
certbot renew --force-renewal
echo finish renew

echo start find nginx container id
nginx_container_id=$(docker ps -a | grep sclf-general-web-nginx |cut -d ' ' -f1)
echo nginx_contain_id : $nginx_container_id

echo start reload nginx
docker exec $nginx_container_id nginx -s reload
echo finish reload nginx

我这里将nginx运行在docker中,所以需要找到docker中的nginx容器的id,然后在容器中让nginx对配置文件进行重新加载

解析来配合linux的定时任务定期执行该脚本即可自动完成续期

linux定时执行脚本

使用crontab在linux系统上执行定时任务,如未安装自行百度(一般情况centos默认安装了)

crontab -e进入定时任务编辑页面,添加如下内容

0 0 1 */3 * sh /root/appenv/docker/sclf-general/sclf-general-web-nginx/ssl-renew.sh >> /root/appenv/docker/sclf-general/sclf-general-web-nginx/ssl-renew-log/$(date +"\%Y-\%m-\%d")-output.log 2>&1

表示每3个月的1日0点0分执行脚本

具体表达式可以在线进行修改,https://www.matools.com/crontab

泛域名

只能使用dns解析的方式认证

结合上述内容以及以下github项目即可完成

思路:对接各个平台的dns解析服务api,使用cerbot自带的钩子完成

https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au

项目有点时间没有更新了,api有问题,可以自己更新python脚本对接最新的平台api

后面有时间再补充

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成SSL证书并配置Nginx SSL证书的步骤如下: 1. 生成密钥对 使用openssl生成密钥对,命令如下: ```shell openssl genrsa -des3 -out server.key 2048 ``` 其中,server.key是生成的密钥文件名,2048是密钥长度,可以根据需要进行修改。 2. 生成证书请求文件 使用上一步生成的密钥文件生成证书请求文件,命令如下: ```shell openssl req -new -key server.key -out server.csr ``` 其中,server.key是上一步生成的密钥文件名,server.csr是生成的证书请求文件名。 在执行该命令时,需要输入一些证书相关的信息,例如国家、省份、城市、公司、部门等信息。这些信息可以根据实际情况进行填写。 3. 生成证书文件 使用上一步生成的证书请求文件生成证书文件,命令如下: ```shell openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt ``` 其中,server.csr是上一步生成的证书请求文件名,server.key是上一步生成的密钥文件名,server.crt是生成的证书文件名。 在执行该命令时,需要输入一些证书相关的信息,例如国家、省份、城市、公司、部门等信息。这些信息可以根据实际情况进行填写。 4. 配置Nginx SSL证书Nginx配置文件中添加SSL证书配置,例如: ```shell server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; ... } ``` 其中,/path/to/server.crt和/path/to/server.key分别是上一步生成的证书文件和密钥文件的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值