https单向认证与双向认证

Posted ieliubo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了https单向认证与双向认证相关的知识,希望对你有一定的参考价值。

1.首先理解非对称加密与对称加密
   (1)非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,
       只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,
  所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:
  甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;
  甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
        非对称加密原理:
1.A要向B发送信息,A都会产生一对用于加密和解密的公钥和私钥。
2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
   (2)对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,
        使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,
才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,
这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。
不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,
这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。
对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。
在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。

2.单向认证:
Https在建立Socket连接之前,需要进行握手。
(1)客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。
(2)服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书
    (3)客户端使用服务端返回的信息验证服务器的合法性,包括:证书是否过期,发型服务器证书的CA是否可靠,返回的公钥是否能正确解开返回证书中的数字签名
        ,服务器证书上的域名是否和服务器的实际域名相匹配,验证通过后,将继续进行通信,否则,终止通信
     (4)客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择。
(5)服务器端在客户端提供的加密方案中选择加密程度最高的加密方式。
     (6)服务器将选择好的加密方案通过明文方式返回给客户端,
(7)客户端接收到服务端返回的加密方式后,使用该加密方式生成产生随机码,用作通信过程中对称加密的密钥,
  使用服务端返回的公钥进行加密,将加密后的随机码发送至服务器。
(8)服务器收到客户端返回的加密信息后,使用自己的私钥进行解密,获取对称加密密钥。 
在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全。
3.双向认证
   双向认证和单向认证原理基本差不多,只是除了客户端需要认证服务端以外,增加了服务端对客户端的认证。
   (1)客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。
   (2)服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书。
   (3)客户端使用服务端返回的信息验证服务器的合法性,包括:
         证书是否过期
         发型服务器证书的CA是否可靠
         返回的公钥是否能正确解开返回证书中的数字签名
         服务器证书上的域名是否和服务器的实际域名相匹配
         验证通过后,将继续进行通信,否则,终止通信
   (4)服务端要求客户端发送客户端的证书,客户端会将自己的证书发送至服务端
   (5)验证客户端的证书,通过验证后,会获得客户端的公钥
     (6)客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择
    (7)服务器端在客户端提供的加密方案中选择加密程度最高的加密方式
    (8)将加密方案通过使用之前获取到的公钥进行加密,返回给客户端
    (9)客户端收到服务端返回的加密方案密文后,使用自己的私钥进行解密,获取具体加密方式,而后,产生该加密方式的随机码,用作加密过程中的密钥,
使用之前从服务端证书中获取到的公钥进行加密后,发送给服务端
    (10)服务端收到客户端发送的消息后,使用自己的私钥进行解密,获取对称加密的密钥,在接下来的会话中,
服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全。

以上是关于https单向认证与双向认证的主要内容,如果未能解决你的问题,请参考以下文章

https 单向认证和双向认证配置

SSL双向认证和SSL单向认证的流程和区别

网络https单向认证和双向认证

实现tomcat的https单向认证及双向认证

Https单向认证和双向认证

https单向认证和双向认证