HTTPS SSL RSA 数字证书 等

HTTPS

  1. 概念
    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

    HTTPS = HTTP + SSL
    HTTP协议是明文传输的,也就是说当数据包使用HTTP协议进行传输的时候,如果数据包中途被截下来了,那么里面的数据(明文)就会完全暴露。因此,如果数据包里面存放着用户的帐号和密码,就可以认为用户的帐号和密码已经泄漏了。
    HTTPS协议则使用了SSL对数据进行加密,即使数据被拦截下来,如果没有解密的密钥,也无法得知用户的数据。

  2. HTTPS和HTTP的区别
    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
    为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
    HTTPS和HTTP的区别主要为以下四点:
    一、https协议需要到CA(CA, Certificate Authority证书颁发机构)申请证书,一般免费证书很少,需要交费。
    二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
    三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

SSL

  1. 概念

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

  2. 提供服务

    1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
    2)加密数据以防止数据中途被窃取;
    3)维护数据的完整性,确保数据在传输过程中不被改变。

  3. 四次握手
    见:https://www.jianshu.com/p/119c4dbb7225

RSA加密算法

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
RSA是一种非对称加密的算法,所谓非对称加密算法,就是用于加密解密的密钥有两个,即公钥和私钥,用公钥加密过的数据,只有私钥才能解密。(对称加密算法就是说用于加密解密的只有一个密钥,密钥既能加密数据,又能解密数据)
公钥是可以公开的,别人知道也无所谓,私钥则要存储在安全的地方,不能泄漏。
在这里插入图片描述
公钥,私钥,数字签名的理解
比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

  • Bob将他的公开密钥传送给Alice。
  • Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
  • Bob给Alice回信,决定采用"数字签名"。
    • Bob写完回信后,先用Hash函数,生成信件的摘要(digest)。 然后,Bob使用私钥,对这个摘要加密,生成"数字签名"(signature)。
    • Bob将这个签名,附在信件下面,一起发给Alice。
  • Alice收信后
    • 取下数字签名,用Bob的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的(公钥解密成功,证明是Bob用自己的私钥加密的)。
    • Alice再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。
  • 复杂的情况出现了。道格想欺骗Alice,他偷偷使用了Alice的电脑,用自己的公钥换走了Bob的公钥。此时,Alice实际拥有的是道格的公钥,但是还以为这是Bob的公钥。因此,道格就可以冒充Bob,用自己的私钥做成"数字签名",写信给Alice,让Alice用假的Bob公钥进行解密。
  • 后来,Alice感觉不对劲,发现自己无法确定公钥是否真的属于Bob。她想到了一个办法,要求Bob去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对Bob的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
  • Bob拿到数字证书以后,就可以放心了。以后再给Alice写信,只要在签名的同时,再附上数字证书就行了。
  • Alice收信后,用CA的公钥解开数字证书,就可以拿到Bob真实的公钥了,然后就能证明"数字签名"是否真的是Bob签的。

客户端与服务器端,应用数字证书,最终交互流程如下:
在这里插入图片描述

HTTPS之单向验证和双向验证

单向验证:只验证服务器端身份是否可信
双向认证:既验证服务端身份,也验证客户端身份。客户端可以通过浏览器上传证书。服务器端有一个信任库,用于验证客户端证书。
使用单向验证还是双向验证,是服务器决定的。如果你使用的是Tomcat服务器,在server.xml中进行配置。
TCP的三次握手、SSL/TLS四次握手见:https://www.jianshu.com/p/119c4dbb7225


参考:https://blog.csdn.net/laughing2333/article/details/52292481
https://www.cnblogs.com/shenkebky/p/8461841.html
https://www.jianshu.com/p/119c4dbb7225
https://www.cnblogs.com/charlesblc/p/6130433.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值