作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。
虽然我们上一小节已经完成的https的证书申请和配置,但是对于一生要强的运维来说,自动化是毕生的追求,所以我们必须实现自动化。
Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书(资料来源百度百科)。以前我记得是手动申请,这个自动化我还是第一次实操。
1.安装工具
# 启用 EPEL 仓库
yum install epel-release -y
# CentOS 7 使用 Python 2 版本
yum install certbot python2-certbot-nginx -y certbot --version | grep nginx
#如果输出中包含 nginx,表示插件已安装成功
2.自动申请证书
certbot --nginx -d chenhong.fun
-
按照提示操作(输入邮箱、同意协议、选择是否强制跳转 HTTPS)。
-
Certbot 会自动修改 Nginx 配置并申请证书,但是由于这个需要你的网站支持http访问,由于备案原因,我这个不支持,所以暂时无法实现。验证的时候他会来访问类型下面的地址。
3.手动申请证书(DNS验证方法)
他会要求你到域名控制台去添加一个TXT记录,TXT记录不影响现有解析。具体添加的内容参考命令输出,就是下面红框部署。
certbot certonly \
--manual \
--preferred-challenges \
dns -d chenhong.fun
添加记录
这里2条TXT记录其中一条是前面申请阿里云的免费证书自动添加的,一条是我手动添加的。
当域名解析生效以后,按回车继续(就会有如下的提示)。
Press Enter to Continue
Waiting for verification...
Cleaning up challenges
Subscribe to the EFF mailing list (email: dan.dessler@163.com).
Starting new HTTPS connection (1): supporters.eff.org
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/chenhong.fun/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/chenhong.fun/privkey.pem
Your certificate will expire on 2025-07-08. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again. To non-interactively renew *all* of your
certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
生成的证书文件,如下图。
4.手工申请证书(本地文件方法法)
具体目录以现场配置的静态路径为准,后面的目录是固定的,生成的内容和刚才的类似,不过由于我刚使用DNS验证方法已经申请过证书,所以这里重复申请会提示覆盖操作。
mkdir -p /home/static/.well-known/acme-challenge
server {
listen 80;
server_name chenhong.fun;
location /.well-known/acme-challenge {
root /var/www/html;
allow all;
}
location / {
return 301 https://$host$request_uri; # 其他请求跳转 HTTPS
}
}
certbot certonly \
--webroot \
-w /home/static \
-d chenhong.fun
当然还有通过自动修改dns的方法,这个就是使用api去调用域名的解析记录,实现自动解析域名。
配置成功以后,通过浏览器访问网站,检查证书信息,可以看到证书的办法机构已经是我们预期的Let's Encryp。
由于网络的原因我们没有实现自动化及轮询,其实我们也可以手工实现的,通过任务计划的方式来实现。但是要考虑请求频率的问题,避免你的申请被封。
通过以上验证方法,我们正常申请证书的验证方法就是DNS的TXT记录验证和文件访问验证,无论免费还是收费都是这2个方法。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。