HTTPS 区别于 HTTP,它多了加密(encryption),认证(verification),鉴定(identification)。它的安全源自非对称加密以及第三方的 CA 认证。
https 运作流程的加密
1. 客户端生成一个随机数 random-client,传到服务器端(Say Hello)
2. 服务器端生成一个随机数 random-server,和着公钥,一起回馈给客户端(I got it)
3. 客户端收到的东西原封不动,加上 premaster secret(通过 random-client、random-server 经过一定
算法生成的东西),再一次送给服务器端,这次传过去的东西会使用公钥加密定算法生成的东西),再
一次送给服务器端,这次传过去的东西会使用公钥加密算法生成的东西),再一次送给服务器端,
这次传过去的东西会使用公钥加密定算法生成的东西),再一次送给服务器端,这次传过去的东西会使用公钥加密
4. 服务器端先使用私钥解密,拿到 premaster secret,此时客户端和服务器端都拥有了三
5. 个要素:random-client、random-server 和 premaster secret个要素:random-client、random-server
和 premaster secret
此时安全通道已经建立,以后的交流都会校检上面的三个要素通过算法算出的 session key
https 运作流程的认证
问: 光加密不行,如何确保没有中间人?客户端访问的一定就是目标网站?
证书,权威机构颁发的证书,中间人是没有目标网站的证书的。所以证书需要权威机构颁发,一般浏览器支持大多数权威机构
问: CA 证书包含什么内容?
数字签名(Signature Algorithm)
有效时间(Validity)
主体(Issuer)
公钥(Public Key)
X509v3 扩展,证书格式
问: 好一点的证书收付费昂贵,免费的证书也有限制,如果是内网用(没用公网域名或只有内网IP),可以不可使用 https 呢?
答案:可以。
在内网,我们可以自建 ROO CA,充当权威认证机构
使用openSSL创建服务端公钥和密钥,并使用 CA 签发,将签发后的私钥(pem)和公钥文件(key)配置到服务器网站中
(也可以生成jks文件,一个 jks 可以包含多个公钥和私钥)
问: 内网客户端访问配置成功的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://www.barretlee.com/blog/2016/04/24/detail-about-ca-and-certs/
https://www.barretlee.com/blog/2015/10/05/how-to-build-a-https-server/
https://www.cnblogs.com/wqhwe/p/5407468.html
https://blog.csdn.net/think_program/article/details/60780843
weblogic 中如何配置 https 可参考
http://dead-knight.iteye.com/blog/1941716
https://blog.csdn.net/h330531987/article/details/74991694
tomcat 中如何配置 https 可参考
https://blog.csdn.net/Bronna/article/details/75290819