Hey,有没有遇到过HTTPS和内网配置的问题?别急,今天就来聊聊这个话题。
HTTPS比HTTP更安全,它多了加密、认证和鉴定。那HTTPS是怎么加密的呢?咱们一步步来看。
HTTPS加密流程
1. 客户端生成一个随机数random-client,传到服务器端。
2. 服务器端生成一个随机数random-server,和着公钥,一起回馈给客户端。
3. 客户端收到的东西原封不动,加上premaster secret,再一次送给服务器端。
4. 服务器端先使用私钥解密,拿到premaster secret,此时客户端和服务器端都拥有了三个要素:random-client、random-server 和 premaster secret。
5. 安全通道建立,以后的交流都会校检上面的三个要素通过算法算出的session key。
HTTPS认证流程
问:光加密不行,如何确保没有中间人?客户端访问的一定就是目标网站?
答:证书,权威机构颁发的证书,中间人是没有目标网站的证书的。
问:CA证书包含什么内容?
答:数字签名、有效时间、主体、公钥、X509v3扩展,证书格式。
内网使用HTTPS
问:好一点的证书收付费昂贵,免费的证书也有限制,如果是内网用(没用公网域名或只有内网IP),可以不可使用HTTPS呢?
答:可以。在内网,我们可以自建ROOT CA,充当权威认证机构。
使用openSSL创建服务端公钥和密钥,并使用CA签发,将签发后的私钥(pem)和公钥文件(key)配置到服务器网站中。
内网HTTPS问题
问:内网客户端访问配置成功的HTTPS后会提示网站不受信任,是什么原因?如何处理?
答:任何个体/组织都可以扮演CA的角色,只不过难以得到客户端的信任,能够受浏览器默认信任的CA大厂商有很多,其中TOP5是Symantec、Comodo、Godaddy、GolbalSign 和 Digicert,当然是不信任自建CA的,所以会提示用户网站不受信任。所以客户端浏览器访问自建https网站时需要安装ROOT CA证书,表示信任该自建CA。
HTTPS其他知识
HTTPS的传输采用的是非对称加密,一组非对称加密密钥包含公钥和私钥,通过公钥加密的内容只有私钥能够解密。
CA认证分为三类:DV ( domain validation),OV ( organization validation),EV ( extended validation),证书申请难度从前往后递增,貌似EV这种不仅仅是有钱就可以申请的。
HTTPS一般使用的加密与HASH算法如下:
- 非对称加密算法:RSA,DSA/DSS
- 对称加密算法:AES,RC4,3DES
- HASH算法:MD5,SHA1,SHA256
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。
以上总结来自众多文章中筛选出来的说的比较清楚的,作为参考。
具体实现,请看下一篇。
自签HTTPS证书
——
苏承栈 | 极星编程网资深编辑
想了解更多编程知识,记得关注我们哦!
