type
status
date
slug
summary
tags
category
icon
password
在使用
let's encrypt
获取免费的HTTPS证书的时候,let's encrypt
需要对域名进行验证,以确保域名是你自己的。let's encrypt
的免费证书有3个月的时间,到期前需要续期。
第一次使用certbot签证书时如果输入了邮箱地址,证书快到期前是会发邮件提醒你的。下载Certbot
申请证书
签发证书(standalone)
说明
- —config-dir
证书生成的路径
通知的邮箱地址
- -cert-name
证书文件夹名称
- -d
要签的域名,
-d
后面跟着一个域名,如果有多个域名要签的话记得每一个单独的域名前都要写-d
。certbot的泛域名其实只支持诸如*.example.com
,如要直接使用example.com,就得为其单独也签发一条泛域名DNS-TXT签发证书
服务器不开通80/443端口,通过
DNS-TXT
的方式申请证书说明
- -config-dir
证书生成的路径
通知的邮箱地址
- -cert-name
证书文件夹名称
- -d
要签的域名,
-d
后面跟着一个域名,如果有多个域名要签的话记得每一个单独的域名前都要写-d
。certbot的泛域名其实只支持诸如*.example.com
,如要直接使用example.com,就得为其单独也签发一条- -manual
手动模式
回车后,最后会要求在DNS控制界面增加一条TXT记录用于,域名验证
添加TXT示例如下
添加完记录保存之后,最好要检查一下解析记录
dig网址 https://toolbox.googleapps.com/apps/dig
输入【主机记录】如出现的TXT值与
certbot
提供的值相同,则表示添加记录成功生成证书
最后回车确认,证书便在
/usr/local/nginx/cert/zhsk_fjwanfu_com/live
中,若没有指定路径,默认则在/etc/letsencrypt/live/{域名}
下这个目录下一般会有四个文件:
文件 | 描述 |
cert.pem | 服务器证书 |
chain.pem | 包含Web浏览器为验证服务器而需要的证书或附加中间证书 |
fullchain.pem | cert.pem+chain.pem |
privkey.pem | 证书的私钥 |
一般用
fullchain.pem
和privkey.pem
就可以了Nginx配置使用证书
自动续签证书
签发证书(standalone)
使用下面的命令续期
设置自动续期的话,只需要写脚本放在Cron中定时运行即可,
crontab -e
打开crontab脚本,添加如下的脚本这个脚本表示每隔 7 天,夜里 3 点整自动执行检查续期命令一次。续期完成后,重启 nginx 服务
泛域名DNS-TXT签发证书
虽然 certbot 提供了自动续期命令,但是当我们把自动续期命令配置为定时任务时,我们无法手动添加新的 TXT 记录用于 certbot 验证。
好在 certbot 提供了一个 hook,可以编写一个 Shell 脚本。在续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录
这里以阿里云为例
安装 aliyun cli 工具
设置凭证信息
安装 certbot-dns-aliyun 插件
申请证书
- 测试是否能正确申请:
正式申请时去掉
--dry-run
参数:- 证书续期
如果以上命令没有错误,把
--dry-run
参数去掉。- 自动续期
添加定时任务 crontab。
输入
这是每个月1号3点29分执行一次强制证书更新后重启nginx
脚本中的
--deploy-hook "nginx -s reload"
表示在续期成功后自动重启 nginx。- 作者:十十乙
- 链接:https://shishiyi.cc/article/e38580e8-281a-440d-a537-f30c8c3f41fa
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。