https双向认证 证书如何使用
一.概念介绍
https协议简单来说就是http协议的基础上增加了SSL协议 ,从而来保证数据传输的安全性。
SSL协议:
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
区别:
一、https协议需要到ca申请证书。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
2.SSL证书
SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
证书中一般包含公钥拥有者的信息,公钥,颁发机构的信息等。
使用keytool生成证书的过程,看到比较多的文件类型。cer crt key jks keystore,如果之前没有接触过,真是一头雾水,下面简单介绍一下这几个文件的意义
keystore是Java保存密钥对的秘钥仓库,文件后缀为keystore,后缀类似.jks .truststore都是保存秘钥和证书的仓库
.cer:存储公钥证书的文件格式。
.crt:客户端认证的证书、私钥。
双向认证需要服务端和客户端都提供cer格式的证书,然后导入到彼此的keystore中
3.双向认证的过程
1-客户端请求服务端,
2-服务器向客户端传送SSL协议的版本号,加密算法的种类等信息,将证书发给客户端