由于hhtp是明文传输,所以对于一些敏感信息存在许多的安全隐患 ,所以要对HTTP进行加密处理
HTTPS =HTTP + 加密+ 认证 +完整性保护
HTTPS就是身披SSL(secure socket layer)外套的HTTP,它并不是新的协议,而是Http的通信接口部分用ssl和tls协议代替了而已
加密:通过共享密钥来进行加密传输
共享密钥:加密算法是公开的,每种算法对应着它的密钥,所以密钥一定要保密;
但是如果想要在服务器与客户端之间传输密钥的话就有可能被窃听的风险,那么安全就无从谈起,
所以我们引进了另外一种技术来传输密钥;就是公开密钥技术
公开密钥:每一个公开密钥对应着一把私有密钥,顾名思义公开密钥就是大家都可以知道的,私有密钥就是不能让任何人知道的;
就是私有密钥只存放在服务器端,由客户端发送公开密钥,然后用私有密钥才能解开,那么私有密钥就一直存放在服务器端而不会泄露。
但是这样又存在另外一个问题,就是人家截取了你的公开密钥,然后换掉你的公开密钥,这样就无法证实这条钥匙是不是真的了,也就是说别人叫你用它的公开密钥写信它,那你的信息就发过去,不知道是不是你请求的那个服务器了。
所以你要证明你发起https请求后,对你响应的那个服务器是不是你要请求的服务器,那个服务器用的是什么公开密钥,就要通过证书来确定了。
证书:由专门的数字证书认证机关颁发公开密钥
1、持有人将公钥以及身份信息发送给权威机构。
2、权威机构负责对持有人的身份进行验证,确保公钥和持有人的信息准确无误。
3、权威机构使用自己私钥对持有人公钥进行数字签名,生成数字证书。
4、为了确保证书不被篡改,权威机构对数字证书进行hash计算(指纹算法),生成摘要(指纹),使用自己的私钥对摘要进行数字签名,放到数字证书中。
但是它的公钥是集成到操作系统中的。别人无法知道。所以持有人的公钥通过证书的私钥进行加密之后,只有操作系统解得开,就可以确保公钥是是真正的服务器发过来的。(别人的也是公钥,但是没有证书加密,不可信)
使用方法
使用混合加密方式,就是通过公开密钥和证书来传送 共享密钥,然后数据通过共享密钥进行加密传输。
因为公开密钥配合私有密钥解密要比共享密钥慢。
但是https本身就要比http慢,因为解密要消耗cpu资源,所以不涉及敏感信息的网页一般不用http加密
网友评论