SSL/TSL(2)---实战

一、客户端的信任证书库到哪获取?

情况一:自定义路径,写到配置文件中。

“ssl.home”为Tomcat中的vm options:配置路径参数。

-Dssl.home=D:\opt\huawei\certificates

以下为自研代码,生成keystore

图一

生成keystore后通过loadTrustMaterial加载证书。

图二

LoadTrustMaterial会调用

C:/Program Files/Java/jdk1.8.0_191/jre/lib/jsse.jar!/sun/security/ssl/TrustManagerFactoryImpl.class类中的方法初始化。

图三

情况二:未在配置文件中设置keystore路径。会从tomcat环境虚拟机配置参数中配的路径找。

那么图2中的keystore为null。直接执行到builder.build。

build初始化的时候也会调用到

C:/Program Files/Java/jdk1.8.0_191/jre/lib/jsse.jar!/sun/security/ssl/TrustManagerFactoryImpl.class类中的方法初始化。如图三。此时var1为null,执行getCacertsKeyStore方法。读取keystore。

tomcat参数配置的信任证书库路径。

javax.net.ssl.trustStore

 

情况三:未指定特殊的trustStore,则到jre默认的信任证书库

$JAVA_HOME/jre/lib/security

C:\Program Files\Java\jdk1.8.0_191\jre\lib\security

先找jssecacerts文件没有则找cacerts文件。

接上图的函数:

 

二、传输过程抓包分析:

报文过程:

 https://www.cnblogs.com/tommaoxiaoqi/articles/10137251.html

 

clienthello发起请求,server传递证书,client验证证书并生成随机数用公钥加密,server用私钥解密得到随机数。双方以后用该随机数加密传输的报文。

 

数据加密传输:

 

使用http的传输方式:

三次握手后直接发送请求报文:

 

内容传输为明文:

 

参考文献:

https://mp.weixin.qq.com/s/UiGEzXoCn3F66NRz_T9crA

猜你喜欢

转载自www.cnblogs.com/tommaoxiaoqi/p/12611172.html
今日推荐