欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SSL连接过程的若干问题

程序员文章站 2024-02-13 13:48:04
...

在设置kafka  使用ssl  中如下的shell脚本

#!/bin/bash
#Step 1
keytool -keystore server.keystore.jks -alias localhost -validity 365 -keyalg RSA -genkey
#Step 2
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
keytool -keystore server.truststore.jks -alias CARoot -import -file ca-cert
keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert
#Step 3
keytool -keystore server.keystore.jks -alias localhost -certreq -file cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 365 -CAcreateserial -passin pass:test1234
keytool -keystore server.keystore.jks -alias CARoot -import -file ca-cert
keytool -keystore server.keystore.jks -alias localhost -import -file cert-signed

 

大致意思是kafka服务端创建秘钥对,然后由CA签名,客户端服务端均信任CA,之后就可以SSL通信

 

其实这里有两个问题有所困扰

第一个问题在于客户端如果手头有若干个证书,如果挑选哪个证书,第二个就是在客户端仅有CA证书(也就是CA公钥)的情况下是如何拿到服务端公钥的。

 

所有问题可以根据如下SSL流程解答,第一个为非秘钥协商的,第二个是带有秘钥协商的

 

不带秘钥协商的

SSL连接过程的若干问题

 

 

第二个是带有秘钥协商的

SSL连接过程的若干问题

 

 

可以看到首先在请求服务端的SSL请求之后,服务端是发送CA证书,签发机构和自己的公钥的,这样就全部解决了上述的问题。

同样这样的过程可以防止中间人攻击。

 

就算中间人把所有公钥和证书截掉作为中间人攻击的方式,返回来的没有私钥就没有任何用。这就防止了中间人攻击

相关标签: SSL