首页 > 编程知识 正文

ssl双向认证流程,SSL协议

时间:2023-05-04 05:25:07 阅读:134270 作者:2764

文章目录概念SSL协议加密方式单向认证双向认证服务端单向认证个人CA颁发二级证书keytool的常用命令

要使相关概念客户端验证服务器端证书,客户端必须安装服务器端公钥文件(cer )。 或者,服务器端证书由官方CA颁发,客户端可以直接连接网络进行身份验证。 因为服务器用自己的私钥对自己的随机数等信息进行加密后发送给客户端,客户端要解开这些数据必须持有服务器的公钥才能通过服务器的验证。 要验证客户端证书,服务器必须将客户端证书的公钥文件放在服务器的trustStore信任库中。 当客户端请求访问服务器端时,它使用自己的私钥将随机数、ssl版本等信息发送到服务器端,服务器必须拥有客户端的公钥才能解开这些数据。 kestore (密钥库)用于存储服务器上的证书,可以将其视为存放密钥的库。 key是由公钥、私钥、数字签名等组成的信息。 密钥实体(key entity key )密钥或者与私钥配对的公钥(使用非对称加密)可信证书实体)是服务器端可信类

publickeycryptographystandards # 12,PKCS#12标准中定义的二进制证书格式,包含公钥和私钥,证书文件扩展名为pfx。 二进制编码证书

证书没有私钥,并且只包含公钥。 DER对二进制格式的证书文件进行编码,并将cer作为证书文件的扩展名。 Base64编码证书

证书没有私钥,并且只包含公钥。 BASE64编码证书文件也使用cer作为证书文件的扩展名。 私钥算法RSA是一种可用于数据加密和数字签名的算法。 DSA (用作数字签名、数字签名算法和数字签名标准的一部分)是另一种不能用作加密而只能用作数字签名的公钥算法。 DSA使用公钥验证收件人的数据完整性和数据提交者的身份。 SSL协议加密方案

SSL协议同时用于对称加密和非对称加密。 在建立传输链路时,SSL首先使用公钥对对称加密的密钥进行非对称加密,链路建立后,SSL对传输内容使用对称加密。

对称加密

可快速加密的内容很大,用于会话中消息的公钥加密

加密速度很慢,但是用于加密对称加密的密钥的单向认证Https在建立套接字连接之前需要握手。 具体步骤如下。

客户端向服务器端发送SSL协议的版本号、加密算法类型和随机数等信息。

服务端向客户端返回SSL协议的版本号、加密算法类型、随机数等信息,同时还返回服务器端证书,即公钥证书

使用客户端返回的信息验证服务器的有效性,例如:

证书是否已过期验证发型服务器证书CA返回的公钥是否与返回的证书的数字签名服务器证书中的域名和服务器的实际域名相匹配,然后继续通信。 否则,中止通信的客户端会将自己支持的对称加密方案发送到服务器端,供服务器端选择

服务器端在客户端提供的加密方式中选择加密度最高的加密方式。

服务器将选择的加密方式用明文返回给客户端

客户端接收到服务器端返回的加密方式后,生成使用该加密方式生成的随机码,作为通信中对称加密的密钥使用,使用服务器端返回的公钥进行加密,将加密后的随机码发送到服务器

服务器收到客户端返回的加密信息后,使用自己的私钥进行解密,获取对称加密密钥。

在下一个会话中,服务器和客户端将使用此密码进行对称加密,以确保通信过程中信息的安全。

双向认证的双向认证和单向认证的原理基本相同,但除了客户端需要认证服务端,还增加了服务端对客户端的认证。 具体步骤如下。

客户端向服务器端发送SSL协议的版本号、加密算法类型和随机数等信息。 服务器向客户端返回SSL协议版本号、加密算法类型、随机数等信息,同时返回服务器端证书。 也就是说,公钥证书的客户机使用从服务器返回的信息验证服务器的合法性。 证书是否过期。通信继续进行,以确定发型服务器证书的CA返回的公钥是否与返回的证书中的数字签名服务器证书的域名和服务器的实际域名匹配并通过验证。 否则,通信服务器会请求客户端发送客户端证书,然后客户端会将自己的证书发送到服务器的验证客户端证书。 认证通过后,客户端的公钥客户端向服务器端发送自己可以支持的对称加密方案。 服务器侧选择服务器侧在客户端提供的加密方式中选择加密度最高的加密方式,使用以前取得的公开密钥对加密方式进行加密,接收返回给客户端侧的加密方式的密文后,使用自己的秘密密钥进行解密,取得具体的加密方式生成该加密方式随机代码,用作为加密中的密钥的以前从服务器侧证书取得的公开密钥加密后,发送到服务器侧接收来自客户端的消息后,用自己的秘密密钥解密,取得对称加密的密钥,在下一个会话中与服务器服务端的认证创建新的k

eystore,用于存放服务端证书,包含了服务端证书的公钥、私钥和证书导出服务端证书的公钥文件(.cer)客户端信任服务端证书,那么需要将服务端证书的公钥文件(.cer)安装到客户端https访问服务器 个人CA签发二级证书 目的:动态添加客户端证书原理:服务器信任CA证书,个人证书用CA证书签名,则服务器间接信任CA证书签名的个人证书。创建个人CA根证书,用于给需要新添加的客户端证书签名 keytool -genkey -v -alias ca -keyalg RSA -storetype PKCS12 -keystore c:ca.key.p12 将CA根证书导入到服务端的信任库中,本例keyStore和trustStore使用的是一个库,当然也可以使用不同库。 #导出CA根证书的公钥文件keytool -export -v -alias ca -keystore c:ca.key.p12 -file c:ca.cer#将cer文件导入到trustStore信任库中keytool -import -v -file c:ca.cer-keystore c:server.key.p12 创建客户端证书 keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore c:client.key.p12 使用个人CA根证书给客户端证书签名,因为我们不会将新建的客户端证书导入到服务端的信任库中,但是我们又想让服务端信任新建的客户端证书,那么使用服务端已经信任的CA根证书给新建的客户端证书签名,就可以了。 #生成签名请求,生成的是一个CSR文件keytool -certreq -v -alias client -keystore c:client.key.p12 -file c:client.csr#使用CA根证书给客户端证书签名,得到的cer文件就是签名后的公钥证书keytool -gencert -v -alias ca -keystore c:ca.key.p12 -infile c:client.csr -outfile c:client.cer#将签名后的cer文件导入到client.key.p12文件中,因为client.key.p12是客户端证书,#需要安装在客户端,但是client.key.p12中的公钥文件还是client签发的,并没有被修改,#需要我们将cer文件导回,将原来的公钥替换掉才可以。keytool -import -v -file c:client.cer -keystore c:client.key.p12#查看被签名后的证书详情,扩展里边证书的发布者已经修改为cakeytool -list -v -keystore c:client.key.p12 -storepass client123#双击client.key.p12文件安装新建的客户端证书,安装到个人证书。 keytool常用命令 -genkey 在用户主目录中创建一个默认文件”.keystore”,还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书。在没有指定生成位置的情况下,keystore会存在用户系统默认目录。-alias 产生别名,每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写。-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)-keyalg 指定密钥的算法 (如 RSA、DSA(如果不指定默认采用DSA))-validity 指定创建的证书有效期多少天-keysize 指定密钥长度-storepass 指定密钥库的密码(获取keystore信息所需的密码)-keypass 指定别名条目的密码(私钥的密码)-dname 指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”-list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码-v 显示密钥库中的证书详细信息-export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
-file 参数指定导出到文件的文件名-import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书-delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码-printcert 查看导出的证书信息 keytool -printcert -file client.crt-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore xxx-storepasswd 修改keystore口令 keytool -storepasswd -keystore c:server.keystore -storepass 123456(原始密码) -new 123(新密码)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。