前言
如今的互联网越来越不安全,我们每个人的信息以及隐私不断被暴露,地下黑产盛行,经常收到垃圾短信,经常被陌生人的电话骚扰。我们的个人信息是怎么泄漏的呢?各种爬虫无时无刻不在互联网爬取着信息,各种嗅探工具无时无刻不在劫持着网络数据包,各种大大小小互联网公司因各种漏洞被脱库。互联网安全非常重要,如今很多大公司都强制使用https加密协议访问,安全性有了很大的提高,最起码数据包不能被劫持了,保证了客户端与服务器端通讯安全性。服端配置加密协议访问,在我的印象中是非常麻烦的,要搞老半天,而且不一定能跑起来。前段时间看了一篇讲解部署https的文章,整个过程简单自动化透明,而且证书是免费的,而且大部分主流操作系统主流浏览器都支持。在部署https之前需要对https协议以及CA证书以及CA有一定了解。
Let‘ encypt
Let‘s encypt是一家不以盈利为目的提供免费CA证书的机构,它旨在让全世界所有的互联网服务能够简单自动化部署加密协议,让https能够在所有的网站中普及。很多著名公司对其提供赞助,比如facebook,思科,mozilla等。它是对ACME(automated certificate management environment)协议的实现,只要实现了ACME协议的客户端都可以跟它交互。
实现原理
这里根据自己的理解简单描述下
1.生成用于授权对域名列表证书操作的RSA密钥对
2.客户端询问Let‘s encypt获取证书需要做什么?
3.Let‘s encypt告诉客户端需要验证是否真的持有域名以及授权私钥,怎么验证呢?告诉客户端把随机字符串保存在这个域名的根目录下指定命名的文件中以及对指定的字段使用授权私钥进行签名并回传
4.当客户端告诉Let‘s encypt完成了指定的任务时,服端开始验证签名的有效性,开始通过域名访问指定生成的资源,当都验证通过时,服端认为当前客户端拥有指定域名,可以开始发证书了,当前密钥对被授权用于当前域名相关操作,当前密钥对被称之为账户授权密钥对
5.生成网站证书使用的RSA密钥对,请求获取证书时需要用到
6.根据协议生成CSR(certificate sign request)文件,发起CSR请求,请求Let‘s encypt发DV(domain certificate)类型的证书
7.获得证书之后,web服务器就可以开始配置https了
获取证书
客户端选择
官方推荐的certbot需要安装比较多的依赖,而且比较重,尝试之后果断放弃了。因为平时使用PHP开发,所以也尝试使用了PHP编写的客户端,没有发现满意的,也果断放弃了。前几天在搜索我之前看到的那篇文章时,那篇文章没有搜索到,搜索到了其它相关的一些文章,其中有篇文章提到了一个很简洁的客户端acme_tiny,使用python实现的,看起来不错,就使用它了。
生成账户私钥对
需要注意的地方
1.证书有效期是90天
2.为了避免滥用,一周内同一个域名只能生成20次
3.开发客户端时,可以使用沙盒环境
4.为了避免证书过期,可以写一个shell脚本自动更新证书
上海哲涛网络科技有限公司研发的Easy HTTPs,可以快速申请Let's encrypt证书,只需要提交域名,五分钟就可以一键式申请到Let's encrypt证书、一键式部署、到期时可自动下载安装证书,完美解决了上文中提到的需要注意的地方。
点击图片即可注册,填写域名即可获得Let's encrypt证书
更多关于Easy HTTPs的信息,可访问上海哲涛科技官网:https://easy.zhetao.com