https通讯原理、加密算法、证书整理总结

前段时间对接了好多外部接口,很多都是https的,还有证书,还有一些加密的。对这块不是太了解,就查资料整理总结实践下。消化掉的知识,才是真正属于自己的。

1、https

      HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

      用途两种:一种是建立一个信息通道,来保证数据传输的安全;另一种就是确认网站的真实性,凡是使用了 https 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询。

     数字证书:数字证书是一种权威性的电子文档,由权威公正的第三方机构,即CA中心签发的证书。它以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性。 使用了数字证书,即使您发送的信息在网上被他人截获,甚至您丢失了个人的账户、密码等信息,仍可以保证您的账户、资金安全。 VeriSign、GeoTrust、Thawte 是国际权威数字证书颁发认证机构的“三巨头”,其中,应用最广的为VerSign签发的电子商务数字证书。数字证书的持有人都有一对公钥和私钥,公钥是公开的,而私钥是由证书持有人在自己本地生成并持有,并且必须妥善保管和注意保密。

     http:超文本传输协议;

     https:安全套接字超文本传输协议;为了数据的安全传输,HTTPS在HTTP的基础上添加SSL/TLS协议;SSL/TLS依靠证书来验证服务器身份;并为浏览器和服务器之间通信加密。

     http和https的区别:

     a、https协议需要到CA(Certificate Authority)申请证书,一般证书很少免费,需要交费;

     b、http是超文本传输协议,信息是明文传输;https则是具有安全性的SSL加密传输协议;

     c、http和https使用的是完全不同的连接方式;http使用80端口;https使用443端口;

     采用https的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。

     https通讯原理:

     https在传输数据之前需要客户端和服务端之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息,通常情况下需要数字证书(公钥)配合实现;

     RSA的性能非常低,一般https连接只在第一次握手时使用非对称加密通过握手交换对称密钥,以后的通讯都是对称加密;

     https的使用类别:

      一般使用:

     a、客户端与服务端握手产生一个密钥,通过服务器证书来交换密钥(非对称加密算法);

     b、接下来所有的通讯都使用这个密钥来加密通讯;

     严格使用:

     a、要求安全性高的客户端,会要求客户端也必须有一个证书,用于CA认证身份;(单向认证)

     b、大多数银行使用这种方法,具体证书就放在U盘里(U盾);(双向认证,客户端的身份也需要被验证)

     https具体的握手过程:

      --------------------------------------验证服务端证书合法性----------------------------------------------------------------------------------------------------------------------------------------------------------

     1、客户端的浏览器向服务端发送客户端SSL/TLS协议版本号、支持的加密算法种类(如:RSA加密算法,DES对称加密算法,SHA1摘要算法)、产生随机数等信息;

      2、服务端向客户端浏览器回传SSL/TLS 协议版本号、选择一种客户端浏览器支持的加密算法和HASH算法、随机数、服务端证书等信息;(证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息;证书中的私钥只能用于服务器端进行解密,在握手的整个过程中,都用到了证书中的公钥和浏览器发送给服务器的随机密码以及对称加密算法

      3、客户端浏览器利用服务端回传的信息验证服务端的合法性;合法性包括:证书是否过期、发行服务器证书的CA是否可靠、证书的公钥能否正确解开服务端证书的“数字签名(使用私钥加密,只有公钥能解密)”、服务端证书上的域名和服务端实际域名是否匹配;合法则继续(浏览器栏里面会显示一个小锁头),否则断开连接;

       --------------------------------------客户端与服务端约定一个随机对称密码-----------------------------------------------------------------------------------------------------------------------------------

      4.1、客户端浏览器随机产生一个随机数,用于后面通讯的“对称密码”,然后用服务端证书的公钥对随机“对称密码”加密;根据服务端指定的HASH算法(如SHA1)计算握手消息,并使用生成的“对称密码”对握手消息加密;然后把加密后的“对称密码”和加密的握手消息发送给服务端;

      4.2、如果服务端要求认证

      5、服务端使用私钥解密获得随机“对称密码”,然后使用随机“对称密码”解密客户端浏览器发送的握手消息并验证hash与浏览器发送过来的是否一样;

      6、服务端使用随机“对称密码”加密握手信息,发送给客户端浏览器;

      7、客户端浏览器使用随机“对称密码”解密握手消息并比较服务端发送的hash是否一致;一致此时握手结束,以后的通讯都是使用这个随机“密码”加密;

2、加密算法

      非对称加密算法(密钥对,客户端用公钥加密数据发送给服务端,服务端用私钥解密数据):DH、RSA、EL GAML、ECC

      RSA:是目前最有影响力的公钥加密算法,已被ISO推荐为公钥数据的加密标准。其背后复杂的数学原理,简单来说就是:将2个大素数(质数)相乘非常容易,但要对其乘积结果因式分解非常困难。

      对称加密算法(只有一个密钥,加密和解密都用这个密钥):DES、IDEA、RC2、RC4、SKIPJACK

      HASH算法,常用的摘要算法:MD5、SHA1、SHA256

      摘要算法的特点:跟java中的hashCode类似。采用单向hash函数,将需要加密的明文摘要成一段128位的密文。

                                      1、无论消息有长,计算出来的消息摘要长度是固定的。

                                      2、只要消息不同,计算出来的摘要也不同;但相同的消息,计算出来的摘要是一样的。

                                      3、计算摘要的函数只能正向计算,不能逆向;即无法通过摘要逆向计算出消息。

      安全原理:如果消息中途被改变了,接收者通过对消息计算摘要,然后和原摘要比较,就知道消息是否被改变了。

      

3、证书

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值