SSL单向认证和双向认证

SSL(Secure Sockets Layer,安全套接字协议)是为网络通信提供安全及数据完整性的一种安全协议。本文主要介绍 SSL 单向认证和双向认证。

关于证书

1、每个人都可以使用一些证书生成工具为自己的https站点生成证书(比如jdk的keytool),大家称它为“自签名证书”,但是自己生成的证书是不被互联网承认的,所以浏览器会报安全提示,要求你手动安装证书。只有通过权威的CA机构付费获得的证书才能被互联网承认(有点类似于根域服务器的权威机构)。

2、证书(无客户端服务端之分)保存着ip信息、证书过期时间、证书所有者地址信息等。

  • SSL 单向认证 无需客户端拥有证书,只需服务端拥有证书。SSL 双向认证 需要客户端和服务端双方都拥有证书。

单向认证

  1、客户端保存着服务端的证书并信任该证书即可

  2、https一般是单向认证,这样可以让绝大部分人都可以访问你的站点。

双向认证

  1、先决条件是有两个或两个以上的证书,一个是服务端证书,另一个或多个是客户端证书。

  2、服务端保存着客户端的证书并信任该证书,客户端保存着服务端的证书并信任该证书。这样,在证书验证成功的情况下即可完成请求响应。

  3、双向认证一般企业应用对接。

SSL单向认证和双向认证_第1张图片

  • 客户端发起建立HTTPS连接请求,将SSL协议版本的信息发送给服务器端;
  • 服务器端将本机的公钥证书(server.crt)发送给客户端;
  • 客户端读取公钥证书(server.crt),取出了服务端公钥;
  • 客户端生成一个随机数(密钥R),用刚才得到的服务器公钥去加密这个随机数形成密文,发送给服务端;
  • 服务端用自己的私钥(server.key)去解密这个密文,得到了密钥R
  • 服务端和客户端在后续通讯过程中就使用这个密钥R进行通信了。

SSL单向认证和双向认证_第2张图片

双向认证流程

  1. 客户端发起建立HTTPS连接请求,将SSL协议版本的信息发送给服务端;
  2. 服务器端将本机的公钥证书(server.crt)发送给客户端;
  3. 客户端读取公钥证书(server.crt),取出了服务端公钥;
  4. 客户端将客户端公钥证书(client.crt)发送给服务器端;
  5. 服务器端使用根证书(root.crt)解密客户端公钥证书,拿到客户端公钥;
  6. 客户端发送自己支持的加密方案给服务器端;
  7. 服务器端根据自己和客户端的能力,选择一个双方都能接受的加密方案,使用客户端的公钥加密8. 后发送给客户端;
  8. 客户端使用自己的私钥解密加密方案,生成一个随机数R,使用服务器公钥加密后传给服务器端;
  9. 服务端用自己的私钥去解密这个密文,得到了密钥R
  10. 服务端和客户端在后续通讯过程中就使用这个密钥R进行通信了。


wireshake实例分析:

SSL/TSL双向认证过程与Wireshark抓包分析_区块链之美的博客-CSDN博客_ssl双向认证抓包

https://ukscott.blogspot.com/2019/03/wireshark-https-2-tlsssl.html

Wireshark入门与进阶系列十一之SSL分析_煜铭2011的博客-CSDN博客_wireshark分析ssl协议

HTTPS|SSL笔记-SSL双向认证失败(客户端证书信任库不含服务端证书)握手过程(含wireshark分析)_IT1995的博客-CSDN博客_ssl双向认证抓包

ref:

SSL/TLS 双向认证(一) -- SSL/TLS 工作原理_ustccw的博客-CSDN博客_tls双向认证

HTTPS之TLS1.2连接详解_张孟浩_jay的博客-CSDN博客_tls连接

https单向认证和双向认证区别 - 周睿 - 博客园

SSL双向认证和SSL单向认证的流程和区别 - petercao - 博客园

SSL 单向认证和双向认证说明 | 腾讯云

HTTPS双向认证指南 - 简书

你可能感兴趣的:(服务器运维,https,ssl,服务器)