Let‘s Encrypt通配符证书与Nginx配置实践(以阿里云域名为例)

前言

SSL证书很贵,阿里云更新免费ssl证书策略,每三个月就会过期重签。期望一个免费、方便的SSL证书产品。Let’s Encrypt完美解决此问题。

Let’s Encrypt简介

Let’s Encrypt,知名的证书颁发机构,开放、免费自动续期,绝大多数浏览器都支持。

前期准备

  1. centos服务器,安装好nginx
  2. 阿里云购买域名,并做好解析到服务器
  3. 在阿里云上建一个用户,添加权限AliyunDNSFullAccess即:管理云解析(DNS)的权限,保存AccessKey IDAccessKey Secret 备用

下载和安装

常用certbot和acme.sh管理证书,本例使用acme.sh

  1. 下载
# 下载
wget -O acme.sh-master.tar.gz https://codeload.github.com/acmesh-official/acme.sh/tar.gz/master
# 解压
tar -zxvf acme.sh-master.tar.gz
# 安装
cd acme.sh-master
# 替换你的邮箱
./acme.sh --install -m xx@qq.com
# 查看版本
./acme.sh --version
# 添加bash,方便操作,非必须
alias acme.sh=~/.acme.sh/acme.sh
  1. 配置阿里云dns信息
# 编辑acme配置
vi /root/.acme.sh/account.conf

增加一下配置,添加阿里云管理dns的访问秘钥

SAVED_Ali_Key='your AccessKey ID'
SAVED_Ali_Secret='your AccessKey Secret'
USER_PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'

生成证书并配置nginx

  1. 生成证书
# 生成证书,可以只生成一个主域名证书,会默认支持二级域名
acme.sh --issue --dns dns_ali -d xxx.com --keylength ec-256
# 如果这里直接写通配符,亲测(踩坑)只支持二级域名
# acme.sh --issue --dns dns_ali -d *.xxx.com
 --keylength ec-256
  1. 安装证书
    也就是把证书安装到一个位置
# 此处在安装之后重启了nginx
acme.sh --install-cert -d xxx.com \
--key-file       /usr/local/nginx/ssl/xxx.com.key  \
--fullchain-file /usr/local/nginx/ssl/fullchain.cer \
--reloadcmd     "systemctl reload nginx"

去指定位置/usr/local/nginx/ssl/即可看到证书。

这里要求nginx被安装未服务

  1. 配置到nginx
    在nginx配置文件中添加ssl配置
server {
    listen       443 ssl;
    server_name  xxx.com www.xxx.com;

    ssl_certificate      /usr/local/nginx/ssl/fullchain.cer;
    ssl_certificate_key  /usr/local/nginx/ssl/www.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

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

此处生成的是通配符证书,任何二级域名都可以被认证

特别注意:通配符域名支持二级域名,三级域名需要单独依次生成。

自动续签

默认配置后自动续签,可以查看定时任务。

crontab -l
# 输出
41 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

验证自动续签

# 1. 强制更新证书
acme.sh --renew -d lisi.fun --force
# 查看nginx状态是否启动
systemctl status nginx

查看输出是否存在reload日志:
在这里插入图片描述
发现更新证书的时候,重启了nginx,证书更新也正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值