免费申请SSL证书
前言¶
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议,HTTP信息是明文传输,HTTPS则是具有安全性的ssl/tls加密传输协议。HTTP的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全,官方文档已经有切换HTTPS的指导手册了http切换https,我为什么会在这里多此一举呢,是因为使用服务器生成的证书在访问的时候,浏览器会提示不安全,证书不可信,具体的原因可以自行搜索一下(可信的CA机构)。
今天在这里就介绍一款安全、可被浏览器信任的证书:Let’s Encrypt免费证书
准备工作¶
- 一台可以访问互联网的服务器(最低配置:2C/2G)
申请证书¶
1. 安装snapd¶
1 |
|
1 |
|
1 |
|
1 2 |
|
2. 安装certbot¶
1 |
|
1 |
|
1 |
|
1 |
|
至此certbot安装已完成,接下来就是申请证书了
3. 证书申请¶
这是使用的是泛解析域名,填写蓝鲸平台的主域名就可以了
1 |
|
在域名控制台,将下面的TXT格式的解析和域名做个解析,这是域名所属权的校验
这里需要注意的是TXT解析,解析值需要加上双引号(经测试,华为域名解析需要加双引号,阿里域名解析则不需要)
解析完成以后,直接回车,校验没问题的话,会返回证书在服务器的位置和到期时间,因为这是免费的,所以使用期限只有3个月,后面会介绍自动续费的方式
4. 证书续费(自动续费)¶
其实续费很简单,流程和申请一样:
1 2 |
|
但是每次都需要手动更新域名解析的值,这很不“运维”,我想让他可以自己更新域名解析。各种翻阅资料,查询华为API文档后,真被我捣鼓出来了,直接放代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
因为我的域名是在华为上申请的,所以我只捣鼓出了华为的脚本,阿里的脚本你们自己捣鼓吧: - 华为API调试控制台:https://apiexplorer.developer.huaweicloud.com/apiexplorer/sdk?product=DNS&api=ListRecordSets - 阿里API调试控制台::https://next.api.aliyun.com/api-tools/sdk/Alidns?version=2015-01-09&language=python-tea
有了脚本我们续费就可以使用脚本来帮我们修改解析了
certbot renew --cert-name chenshanb3.com --manual-auth-hook /path/to/certbot_renew_hw.py
也可以加入定时任务
0 0 15 * * certbot renew --cert-name chenshanb3.com --manual-auth-hook /path/to/certbot_renew_hw.py
总结¶
虽然每三个月续费一次很麻烦,但是架不住免费呀,在专业机构申请证书动不动就是几万、几十万,使用免费的,运维成本不就降下来了(手动滑稽)~~~ 市面上还有很多域名申请的软件和服务,比如“宝塔面板”,官网地址:https://www.bt.cn/new/index.html,我也安装体验了一下,以下观点只代表我个人: 1. 需要注册才能进入面板使用 2. 都是收费的,唯一免费用的也是Let’s Encrypt免费证书 所以我放弃使用宝塔面板 如果你有更好的域名申请方式,欢迎推荐~~~~
(需要注意的是,一台服务器只能给5个域名申请证书,每天申请的次数也有限制,申请完成以后,别多次测试,不然你就只能换台服务器了。snap和certbot都是国外的软件,所以懂的都懂,安装过程可能会有点慢,耐心等待就可以了)