package org.infinispan.server.test.client.hotrod.security; import static org.infinispan.server.test.client.hotrod.security.HotRodAuthzOperationTests.testPutGet; import static org.infinispan.server.test.client.hotrod.security.HotRodAuthzOperationTests.testSize; import java.io.File; import javax.net.ssl.SSLContext; import org.infinispan.arquillian.core.InfinispanResource; import org.infinispan.arquillian.core.RemoteInfinispanServer; import org.infinispan.arquillian.core.RunningServer; import org.infinispan.arquillian.core.WithRunningServer; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.RemoteCacheManager; import org.infinispan.client.hotrod.configuration.ConfigurationBuilder; import org.infinispan.commons.util.SslContextFactory; import org.infinispan.server.test.category.Security; import org.infinispan.server.test.util.ITestUtils; import org.jboss.arquillian.junit.Arquillian; import org.junit.After; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; /** * Test for using SSL for client server communication encryption. * * @author vjuranek * @since 9.0 */ @RunWith(Arquillian.class) @Category({Security.class}) @WithRunningServer({@RunningServer(name = "hotrodSslNoAuth", config = "testsuite/hotrod-ssl-no-auth.xml")}) public class HotRodSslEncryptionIT { protected static final String DEFAULT_TRUSTSTORE_PATH = ITestUtils.SERVER_CONFIG_DIR + File.separator + "ca.jks"; protected static final String DEFAULT_TRUSTSTORE_PASSWORD = "secret"; protected static RemoteCache<String, String> remoteCache = null; protected static RemoteCacheManager remoteCacheManager = null; @InfinispanResource("hotrodSslNoAuth") RemoteInfinispanServer ispnServer; @After public void release() { if (remoteCacheManager != null) { remoteCacheManager.stop(); } } @Test public void testViaDirectConfig() throws Exception { ConfigurationBuilder builder = new ConfigurationBuilder(); String hostname = ispnServer.getHotrodEndpoint().getInetAddress().getHostName(); builder.addServer().host(hostname).port(ispnServer.getHotrodEndpoint().getPort()); builder.security().ssl().enable().trustStoreFileName(DEFAULT_TRUSTSTORE_PATH).trustStorePassword(DEFAULT_TRUSTSTORE_PASSWORD.toCharArray()); remoteCacheManager = new RemoteCacheManager(builder.build()); remoteCache = remoteCacheManager.getCache(RemoteCacheManager.DEFAULT_CACHE_NAME); testPutGet(remoteCache); testSize(remoteCache); } @Test public void testViaSslContextSetup() throws Exception { ConfigurationBuilder builder = new ConfigurationBuilder(); String hostname = ispnServer.getHotrodEndpoint().getInetAddress().getHostName(); builder.addServer().host(hostname).port(ispnServer.getHotrodEndpoint().getPort()); SSLContext cont = SslContextFactory.getContext(null, null, DEFAULT_TRUSTSTORE_PATH, DEFAULT_TRUSTSTORE_PASSWORD.toCharArray()); builder.security().ssl().sslContext(cont).enable(); remoteCacheManager = new RemoteCacheManager(builder.build()); remoteCache = remoteCacheManager.getCache(RemoteCacheManager.DEFAULT_CACHE_NAME); testPutGet(remoteCache); testSize(remoteCache); } }