@liyuj
2017-11-29T13:12:02.000000Z
字数 2985
阅读 4192
Apache-Ignite-2.3.0-中文开发手册
Ignite允许在所有节点之间使用SSL Socket进行通信。要使用SSL,需要设置Factory<SSLContext>以及配置Ignite配置文件的SSL段落,Ignite提供了一个默认的SSL上下文工厂,org.apache.ignite.ssl.SslContextFactory,他用一个配置好的keystore来初始化SSL上下文。
XML:
<bean id="cfg" class="org.apache.ignite.configuration.IgniteConfiguration"><property name="sslContextFactory"><bean class="org.apache.ignite.ssl.SslContextFactory"><property name="keyStoreFilePath" value="keystore/server.jks"/><property name="keyStorePassword" value="123456"/><property name="trustStoreFilePath" value="keystore/trust.jks"/><property name="trustStorePassword" value="123456"/></bean></property></bean>
Java:
IgniteConfiguration igniteCfg = new IgniteConfiguration();SslContextFactory factory = new SslContextFactory();factory.setKeyStoreFilePath("keystore/server.jks");factory.setKeyStorePassword("123456".toCharArray());factory.setTrustStoreFilePath("keystore/trust.jks");factory.setTrustStorePassword("123456".toCharArray());igniteCfg.setSslContextFactory(factory);
某些情况下需要禁用客户端侧的证书认证(比如连接到一个自签名的服务器时),这可以通过给上述工厂设置禁用信任管理器实现,他可以通过getDisabledTrustManager获得。
XML:
<bean id="cfg" class="org.apache.ignite.configuration.IgniteConfiguration"><property name="sslContextFactory"><bean class="org.apache.ignite.ssl.SslContextFactory"><property name="keyStoreFilePath" value="keystore/server.jks"/><property name="keyStorePassword" value="123456"/><property name="trustManagers"><bean class="org.apache.ignite.ssl.SslContextFactory" factory-method="getDisabledTrustManager"/></property></bean></property></bean>
Java:
IgniteConfiguration igniteCfg = new IgniteConfiguration();SslContextFactory factory = new SslContextFactory();factory.setKeyStoreFilePath("keystore/server.jks");factory.setKeyStorePassword("123456".toCharArray());factory.setTrustManagers(SslContextFactory.getDisabledTrustManager());igniteCfg.setSslContextFactory(factory);
如果配置了安全,那么日志就会包括:communication encrypted=on
INFO: Security status [authentication=off, communication encrypted=on]
Ignite允许使用不同的加密类型,支持的加密算法可以参照:http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#SSLContext,可以通过setProtocol()方法进行设置,默认值是TLS。
XML:
<bean id="cfg" class="org.apache.ignite.configuration.IgniteConfiguration"><property name="sslContextFactory"><bean class="org.apache.ignite.ssl.SslContextFactory"><property name="protocol" value="SSL"/>...</bean></property>...</bean>
Java:
IgniteConfiguration igniteCfg = new IgniteConfiguration();SslContextFactory factory = new SslContextFactory();...factory.setProtocol("TLS");igniteCfg.setSslContextFactory(factory);
下面的配置参数可以通过SslContextFactory进行配置:
| setter方法 | 描述 | 默认值 |
|---|---|---|
| setKeyAlgorithm | 设置key管理器算法,用于创建key管理器。注意,大多数情况下默认值即可,但是在Android平台需要设置成X509. |
SunX509 |
| setKeyStoreFilePath | keystore文件路径,该参数为必须参数,否则SSL上下文无法初始化 | 无 |
| setKeyStorePassword | keystore密码 | 无 |
| setKeyStoreType | 用于上下文初始化的keystore类型 | JKS |
| setProtocol | 安全传输协议 | TLS |
| setTrustStoreFilePath | truststore文件路径 | 无 |
| setTrustStorePassword | truststore密码 | 无 |
| setTrustStoreType | 用于上下文初始化的truststore类型 | JKS |
| setTrustManagers | 设置配置好的信任管理器 | 无 |