请参阅Running the client with SSL/TLS。这解释了服务器执行客户端身份验证的方案。我正在使用Spring Integration来处理TLS连接。我的spring-context文件是:
<bean id="sslContextSupport"
class="org.springframework.integration.ip.tcp.connection.DefaultTcpSSLContextSupport">
<constructor-arg value="file:keystore.jks"/>
<constructor-arg value="file:truststore.jks"/>
<constructor-arg value="keystorepass"/>
<constructor-arg value="trustpass"/>
</bean>
<int-ip:tcp-connection-factory id="crLfServer"
type="server"
port="${availableServerSocket}"
single-use="true"
so-timeout="10000"
using-nio="false"
ssl-context-support="sslContextSupport" />
我的服务器正在接受SSL连接并使用我的服务器和客户端上安装的证书进行处理。 我不确定上面的弹簧配置是否设置为客户端身份验证。是在SSL转换级别或应用程序代码中完成的客户端身份验证吗?
答案 0 :(得分:1)
Spring Integration DefaultTcpSSLContextSupport
完全基于SSLContext sslContext = SSLContext.getInstance(protocol);
。因此,您在标准Java SSL / TLS文档中看到的内容也适用于此处。
既然你的<int-ip:tcp-connection-factory>
生成了type =“server”,那肯定是
服务器进行客户端身份验证
所有硬SSL工作都在SSLContext
图层完成,而不是TcpNetServerConnectionFactory
,如果这是问题。
换句话说:它与Spring Integration无关。一切都与用户标准SSL / TLS方法的任何其他Java应用程序的工作方式相同。