HTTPS单向双向认证

    技术2022-07-13  88

    HTTPS单向/双向认证

    基本概念原理单向认证流程双向认证流程

    基本概念

    keystore: keytool生成证书的存储库,用来存储若干条目(证书),每一条目包含公私钥,主体信息等。默认为用户目录下.keystore,相当于一个有密码保护的文件。truststore: 与keystore格式相同,只是为区分keystore用来存放信任的证书的新的库,不存密钥等信息。der:证书编码格式,证书结构体转换为二进制格式。pem:证书编码格式,对der二进制编码的base64字符,包含—begin—,----end----。//命令中加-rfc可打印和生成此类文件.csr:证书请求文件格式,包含公钥和主体信息,发给ca,ca用私钥对内容签名并制作成证书返回。keytool在生成csr文件时需要指定证书(即公钥与主体信息)。.crt:一般用于linux系统的证书格式,包含公钥和主体信息。.cer:一般用于windows的证书文件格式,包含公钥和主体信息。.p12:证书交换格式,包含公钥私钥(私用密码加密),用于交换传输。jks是JAVA的keytools证书工具支持的证书私钥格式。

    什么是CA?

    CA是Certificate Authority的缩写,也叫“证书授权中心”。它是负责管理和签发证书的第三方机构,就好比例子里面的中介——C公司。一般来说,CA必须是所有行业和所有公众都信任的、认可的。因此它必须具有足够的权威性。就好比A、B两公司都必须信任C公司,才会找 C公司作为公章的中介。CA 证书,就是CA颁发的证书。 证书=公钥+申请者与颁发者信息+签名

    原理

    双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步。

    单向认证流程:客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。

    双向认证流程:客户端除了需要从服务器端下载服务器的公钥证书进行验证外,还需要把客户端的公钥证书上传到服务器端给服务器端进行验证,等双方都认证通过了,才开始建立安全通信通道进行数据传输。

    单向认证流程

    单向认证流程中,服务器端保存着公钥证书和私钥两个文件,整个握手过程如下:

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

    双向认证流程

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