一、cerbot简介
Certbot是一个免费的开源软件工具,用于在手动管理的网站上自动使用Let’s Encrypt证书以启用HTTPS。要想让自己的网站启用https协议,需要一个由CA(数字证书认证机构)颁发的,能够让各个浏览器都能承认的SSL安全证书。有很多网站可以申请到免费的SSL证书,比如阿里云,腾讯云等。一般免费证书SSL网站只可以申请二级域名ssl证书,而且有数量限制,有效期也是有限制,比如阿里云是20张有效期3个月二级域名ssl证书,腾讯云是20张有效期1年二级域名ssl证书。Let’s Encrypt证书机构则支持申请域名通配符ssl证书,这样我们一个域名有解析多个二级域名的时候我们只需要申请一次即可。只是证书一次有效期只有3个月,我们需要到期手动续期或者通过certbot结合定时任务自动续期。博文实验环境如下:
- 操作系统:centos7.6
- certbot版本:1.11.0
- nginx版本:1.25.5
二、安装步骤及使用简介
1、安装epel
安装certbot之前需要先安装epel扩展源,通过epel扩展源才可以yum安装certbot命令软件包。
[root@s76 ~]# yum install -y epel-release
2、yum安装certbot
通过yum安装,当前安装的版本是1.11.0。
[root@s76 yum.repos.d]# yum install -y certbot
…
Installed:
certbot.noarch 0:1.11.0-2.el7
…
3、验证certbot命令
查看certbot命令版本和命令存储路径。
[root@s76 yum.repos.d]# certbot --version
certbot 1.11.0
[root@s76 yum.repos.d]# which certbot
/usr/bin/certbot
4、查看命令帮助
使用–help参数获取命令帮助。命令语法格式如下:certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] …
[root@s76 yum.repos.d]# certbot --help
5、申请ssl证书
执行certbot命令申请证书,如果是第一次使用的邮箱则会提示是否接受邮箱注册,输入y后继续。
[root@s76 ~]# certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns --email xxx@qq.com --agree-tos -d *.sun-site.com
6、添加域名解析记录用于验证
根据提示登录域名注册商添加一条TXT地址解析记录。添加完成后等待1分钟以上等域名解析生效。
7、证书申请成功
看到Congratulations提示就说明免费证书申请成功了。证书和key存储到/etc/letsencrypt/live/目录下,真实目录是/etc/letsencrypt/archive,会生成一个根据域名名称生成的目录,目录下包括cert.pem 、chain.pem、fullchain.pem、privkey.pem四个文件。
8、打包下载ssl证书
将生成的证书及key文件压缩打包,并下载到本地。当然如果是在部署服务器上申请的证书直接拷贝到指定目录即可。
[root@s76 archive]# zip -r sun-site.com.zip sun-site.com/
adding: sun-site.com/ (stored 0%)
adding: sun-site.com/cert1.pem (deflated 27%)
adding: sun-site.com/privkey1.pem (deflated 23%)
adding: sun-site.com/chain1.pem (deflated 25%)
adding: sun-site.com/fullchain1.pem (deflated 31%)
[root@s76 archive]# sz sun-site.com.zip
9、部署验证
将证书上传到指定目录下,修改nginx配置文件,指定新的证书文件,然后重新加载nginx配置文件。
root@jj100:/usr/local/nginx/conf# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
root@jj100:/usr/local/nginx/conf# nginx -s reload
10、证书查验
访问域名网站,我们可以看到新的证书已经使用,证书颁发机构是Let’s Encrypt,证书有效期是到2024年9月8日。
11、证书续期
使用certbot renew命令可以自动续期证书,–dry-run是进行测试验证,这里如提示证书有效期还比较长,证书有效期小于30天才可以申请续期,自动跳过续期任务。certbot的操作都会在/var/log/letsencrypt/letsencrypt.log留档日志。在使用过程中如果有问题我们可以查看该日志文件,获取详细信息。
[root@s76 certbot-letencrypt-wildcardcertificates-alydns-au]# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
12、关于自动续期
关于证书自动续期有通过安装python2-certbox-nginx插件实现的,有通过shell脚本certbot-letencrypt-wildcardcertificates-alydns-au+定时任务实现的。博主还这里还没有配置成功。后续另外出博文进行实验验证。