|
该版本仍在开发中,尚未被视为稳定。对于最新的稳定版本,请使用 Spring Integration 7.0.0! |
SSL/TLS 支持
支持安全套接字层/传输层安全性。
使用蔚来时,JDK 5+SSLEngine该功能用于连接建立后的握手处理。
不使用NIO时,标准配置SSLSocketFactory和SSLServerSocketFactory对象用于创建连接。
游戏提供了多种策略界面,允许大量自定义。
这些接口的默认实现提供了最简单的安全通信起步方式。
开始
无论你是否使用蔚来,都需要配置SSL-上下文支持连接工厂上的属性。
该属性引用一个<豆/>定义,描述所需密钥存储的位置和密码。
SSL/TLS 对等节点各自需要两个密钥存储:
-
一个包含私钥和公钥对以识别对端的密钥库
-
一个信任存储,包含被信任节点的公钥。 请参阅相关文档
关键工具JDK配备了实用功能。 基本步骤是-
创建一个新的密钥对并将其存储在密钥存储中。
-
导出公钥。
-
将公钥导入对等方的信托存储。
-
对另一位同龄人重复同样的作。
-
| 在测试用例中,两个节点使用相同的密钥存储是常见的,但在生产环境中应避免。 |
建立密钥存储后,下一步是向TcpSSLContextSupport并向连接工厂提供该豆子的参考。
以下示例配置了SSL连接:
<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职业还有一个可选协议财产,可以是SSL或TLS(默认)。
密钥存储文件名(前两个构造函数参数)使用 Spring资源抽象化。
默认情况下,文件位于类路径上,但你可以通过使用文件:前缀(用于在文件系统中查找文件)。
从4.3.6版本开始,使用NIO时,你可以指定一个SSL-握手-超时(几秒钟内)连接工厂。
该超时(默认为30秒)在等待数据时使用SSL握手。
如果超时时间超过,进程将被停止并关闭套接字。
主机验证
从5.0.8版本开始,你可以配置是否启用主机验证。 从5.1版本开始,默认启用;禁用它的机制取决于你是否使用了蔚来。
主机验证用于确保你连接的服务器与证书中的信息匹配,即使证书是可信的。
使用NIO时,请配置默认TcpNioSSLConnectionSupport例如。
@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;
}
第二个构造函数参数禁用了主机验证。
这连接支持随后,豆子被注入蔚来连接工厂。
当不使用NIO时,配置为TcpSocketSupport:
connectionFactory.setTcpSocketSupport(new DefaultTcpSocketSupport(false));
同样,构造者论元禁用了主机验证。