为什么需要https
http协议下,信息是明文传输,不提供加密,传输被拦截时,可直接读懂其中的信息,存在安全隐患.
而https就是为了解决这一缺陷,再http基础上加入了ssl协议,依靠证书来验证服务器身份,并未与浏览器之间的通讯加密.
现在都网站基本上都是用了https加密
免费的ca证书
https加密必不可少的就是ca证书
由于https涉及到中间机构的校验,很多ca证书提供商都是收费的,当然其中也有免费提供的
Let’s Encrypt就是其中之一的免费提供商,他使用ACME协议来申请SSL证书,申请的时候需要验证服务器端所有权和管理权,保证了SSL证书获取途径的唯一性和安全性
Certbot
Certbot是官方出的一个ACME客户端,大大的简化了申请流程,达到快速部署的目的
部署流程:
进入 https://certbot.eff.org/ 选择你当前使用的web服务器和操作系统
这里以nginx和centos7为例
选择之后下方会出现对应的操作流程,按照上面的流程基本上可以很顺利的完成操作
首先我们确保环境符合需求 centos7需要安装epel
1 | yum install epel-release |
最后执行安装:
1 | sudo yum install certbot python2-certbot-nginx |
成功之后就可以进行证书申请与安装了:
1 | sudo certbot --nginx |
在这之前要保证你的域名已经正确的配置在nginx中
第一步会读取nginx中配置的域名 让你选择一个或多个
第二步会询问你是否帮你把http请求重定向到https 一般都会选择是
到这里就成功了 可以访问自己的域名,看看有没有加上证书
证书更新
由于Let’s Encrypt的证书有效期只有90天,而在剩余时间小于一个月时才可以更新,所以官方建议使用crontab自动更新
1 | echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null |
当然你也可以选择使用certbot renew命令来手动更新
遇到的问题
一开始以为是模块缺失 后来才发现是版本问题
1 | pip list 2>/dev/null | grep requests |
以上两个命令查询出的版本不一致 重装即可
1 | pip install --upgrade --force-reinstall 'requests==2.6.0' |
这里也是版本问题 重新安装合适的版本





