如何设置TLS Server以在Spring集成中对客户端进行身份验证?

时间:2016-06-10 18:06:11

标签: java ssl tcp spring-integration

请参阅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转换级别或应用程序代码中完成的客户端身份验证吗?

1 个答案:

答案 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应用程序的工作方式相同。