# SSL证书

  • 使用letsencrypt机构颁发的免费证书

letsencrypt官网

# certbot

  • 使用certbot来申请letsencrypt证书
  • 安装certbot,以及nginx插件
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
1
2
3
4
5
6

官网也有介绍不同系统下如何安装certbot以及申请、自动续期证书操作

certbot官网

# 设置证书自动续期

  • letsencrypt证书一般有效期3个月,到期可以手动或者配置自动程序定时检查并且续期

# 手动续期

  1. 先查找certbot命令目录,Linux使用查找命令find / -name 'certbot'会列出名为certbot文件的所有路径,我们需要的一般是/usr/bin/certbot文件
  2. 执行命令/usr/bin/certbot renew检查更新证书,如果有多个证书都将会被检查
  3. 检查/etc/letsencrypt/renewal/下的所有xxx.cn.conf配置文件
  4. 有需要更新的证书将会续期,不需要更新的则不会更新,将会在到期前30天续期
  5. 出现Cert not yet due for renewal说明未到期
  6. 最后还会打印出到期时间/etc/letsencrypt/live/xxxx.cn/fullchain.pem expires on 2020-08-22 (skipped),未到期跳过

# 自动续期

  1. 先查看是否安装了certbot,find / -name "certbot"查看是否存在路径
  2. 检查cron服务service crond status,如果报错则需要安装cron服务,否则跳过以下:
    1. 安装cron输入yum -y install vixie-cronyum -y install crontabs命令
    2. 启动corn服务service crond start
    3. 设置开机启动chkconfig --level 345 crond on
    4. 再次查看服务service crond status
  3. 搜索corn文件find / -name "cron",找到/var/spool/cron这里是所有的自动执行任务的cron文件存放位置(进入),/var/log/cron这个是日志文件位置(不管)
  4. 进入/var/spool/cron文件夹之后,如果有root文件则打开,没有则创建root文件(没后缀),写入内容0 3 */7 * * /usr/bin/certbot renew --renew-hook "/usr/sbin/nginx -s reload"保存root,意思是每隔7天,夜里3点整自动执行检查续期命令一次,续期完成后,重启 nginx 服务。--renew-hook "/usr/sbin/nginx -s reload"为检查更新后执行重启nginx服务器,手动重启nginx服务sudo nginx -s reload
  5. 重启corn服务service crond restart,自动续期搞定!

续期文章推荐

# 申请泛域名

  1. Linux服务器上指令sudo certbot certonly -d "*.xxxx.cn" -d xxxx.cn --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory申请泛域名,其中*.xxxx.cn为泛域名,xxxx.cn为二级域名
  2. 执行上述指令之后会出现以下几个询问

询问新证书替换旧证书(如果之前申请过证书)

# 以下说明你你存在一个证书,包含你的域名,在这个路径中发现/etc/letsencrypt/renewal/xxxx.cn-0001.conf
You have an existing certificate that contains a portion of the domains you
requested (ref: /etc/letsencrypt/renewal/xxxx.cn-0001.conf)
# 包含这个泛域名
It contains these names: *.5102it.cn
# 你将为这些域名申请新的证书(因为之前我都申请了证书,但不是泛域名证书)
You requested these names for the new certificate: *.5102it.cn, 5102it.cn.
# 是否用新证书扩展和替换旧证书
Do you want to expand and replace this existing certificate with the new
certificate?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 扩展/取消
(E)xpand/(C)ancel: e
1
2
3
4
5
6
7
8
9
10
11
12
13

询问是否同意记录当前IP作为证书申请(注意确保是你当前服务器的ip)

NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
1
2
3
4
5
6
7

此处需要配置域名的DNS解析TXT记录(到域名提供商(比如腾讯、阿里)那里配置一个DNS的TXT记录)

# 叫你去配置DNSTXT记录
Please deploy a DNS TXT record under the name
# 配置主机记录为:_acme-challenge.xxxx.cn
_acme-challenge.xxxx.cn with the following value:
# TXT记录值为:
R6OGy7qNPM1KQNh1OR0rwIdJvij0LioDnVOkbub4ezg
# 在回车之前先验证记录是否生效
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
1
2
3
4
5
6
7
8
9
10

Linux上查看DNS解析记录命令dig -t txt _acme-challenge.xxxx.cn @8.8.8.8

Window上查看DNS解析记录命令nslookup -q=txt _acme-challenge.xxxx.cn

  1. 查看之后出现有记录值,那么就可以回车,等待完成了

注意letsencrypt一星期最多操作5次,也就是上面这步骤最多7天5次,之后就不能再试了,要等7天,所以要确保每次尽可能成功

网站证书情况查询

上次更新: 2020-8-15 23:30:07