该版本仍在开发中,尚未被视为稳定。对于最新的稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

SSL/TLS 支持

支持安全套接字层/传输层安全性。 使用蔚来时,JDK 5+SSLEngine该功能用于连接建立后的握手处理。 不使用NIO时,标准配置SSLSocketFactorySSLServerSocketFactory对象用于创建连接。 游戏提供了多种策略界面,允许大量自定义。 这些接口的默认实现提供了最简单的安全通信起步方式。spring-doc.cadn.net.cn

开始

无论你是否使用蔚来,都需要配置SSL-上下文支持连接工厂上的属性。 该属性引用一个<豆/>定义,描述所需密钥存储的位置和密码。spring-doc.cadn.net.cn

SSL/TLS 对等节点各自需要两个密钥存储:spring-doc.cadn.net.cn

在测试用例中,两个节点使用相同的密钥存储是常见的,但在生产环境中应避免。

建立密钥存储后,下一步是向TcpSSLContextSupport并向连接工厂提供该豆子的参考。spring-doc.cadn.net.cn

以下示例配置了SSL连接:spring-doc.cadn.net.cn

<bean id="sslContextSupport"
    class="o.sf.integration.ip.tcp.connection.support.DefaultTcpSSLContextSupport">
    <constructor-arg value="client.ks"/>
    <constructor-arg value="client.truststore.ks"/>
    <constructor-arg value="secret"/>
    <constructor-arg value="secret"/>
</bean>

<ip:tcp-connection-factory id="clientFactory"
    type="client"
    host="localhost"
    port="1234"
    ssl-context-support="sslContextSupport" />

默认TcpSSLContextSupport职业还有一个可选协议财产,可以是SSLTLS(默认)。spring-doc.cadn.net.cn

密钥存储文件名(前两个构造函数参数)使用 Spring资源抽象化。 默认情况下,文件位于类路径上,但你可以通过使用文件:前缀(用于在文件系统中查找文件)。spring-doc.cadn.net.cn

从4.3.6版本开始,使用NIO时,你可以指定一个SSL-握手-超时(几秒钟内)连接工厂。 该超时(默认为30秒)在等待数据时使用SSL握手。 如果超时时间超过,进程将被停止并关闭套接字。spring-doc.cadn.net.cn

主机验证

从5.0.8版本开始,你可以配置是否启用主机验证。 从5.1版本开始,默认启用;禁用它的机制取决于你是否使用了蔚来。spring-doc.cadn.net.cn

主机验证用于确保你连接的服务器与证书中的信息匹配,即使证书是可信的。spring-doc.cadn.net.cn

使用NIO时,请配置默认TcpNioSSLConnectionSupport例如。spring-doc.cadn.net.cn

@Bean
public DefaultTcpNioSSLConnectionSupport connectionSupport() {
    DefaultTcpSSLContextSupport sslContextSupport = new DefaultTcpSSLContextSupport("test.ks",
            "test.truststore.ks", "secret", "secret");
    sslContextSupport.setProtocol("SSL");
    DefaultTcpNioSSLConnectionSupport tcpNioConnectionSupport =
            new DefaultTcpNioSSLConnectionSupport(sslContextSupport, false);
    return tcpNioConnectionSupport;
}

第二个构造函数参数禁用了主机验证。 这连接支持随后,豆子被注入蔚来连接工厂。spring-doc.cadn.net.cn

当不使用NIO时,配置为TcpSocketSupport:spring-doc.cadn.net.cn

connectionFactory.setTcpSocketSupport(new DefaultTcpSocketSupport(false));

同样,构造者论元禁用了主机验证。spring-doc.cadn.net.cn