diff --git a/akka-core/src/main/scala/remote/DummySSLConfig.scala b/akka-core/src/main/scala/remote/DummySSLConfig.scala
deleted file mode 100644
index 2a24ead57b..0000000000
--- a/akka-core/src/main/scala/remote/DummySSLConfig.scala
+++ /dev/null
@@ -1,285 +0,0 @@
-package se.scalablesolutions.akka.remote
-
-import java.io.{ByteArrayInputStream,InputStream}
-import java.security.KeyStore
-import java.security.cert.X509Certificate
-import javax.net.ssl.{ManagerFactoryParameters,TrustManager,TrustManagerFactorySpi,X509TrustManager};
-
-object DummyTrustManagerFactory extends TrustManagerFactorySpi {
- private val DUMMY_TRUST_MANAGER : TrustManager = new X509TrustManager {
- def getAcceptedIssuers() = Array[X509Certificate]()
- def checkClientTrusted(chain : Array[X509Certificate], authType : String) = println("UNKNOWN CLIENT CERTIFICATE: " + chain(0).getSubjectDN)
- def checkServerTrusted(chain : Array[X509Certificate], authType : String) = println("UNKNOWN SERVER CERTIFICATE: " + chain(0).getSubjectDN)
- }
-
- def getTrustManagers = Array(DUMMY_TRUST_MANAGER)
-
- protected override def engineGetTrustManagers = getTrustManagers
- protected override def engineInit(keystore:KeyStore) = ()
- protected override def engineInit(managerFactoryParameters : ManagerFactoryParameters) = ()
-}
-
-object DummyKeyStore {
- def asInputStream : InputStream = new ByteArrayInputStream(for(d <- DATA) yield d.toByte)
- def getCertificatePassword = "secret".toCharArray
- def getKeyStorePassword = "secret".toCharArray
- private val DATA = Array[Short](
- 0xfe, 0xed, 0xfe, 0xed, 0x00, 0x00, 0x00, 0x02,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
- 0x65, 0x00, 0x00, 0x01, 0x1a, 0x9f, 0x57, 0xa5,
- 0x27, 0x00, 0x00, 0x01, 0x9a, 0x30, 0x82, 0x01,
- 0x96, 0x30, 0x0e, 0x06, 0x0a, 0x2b, 0x06, 0x01,
- 0x04, 0x01, 0x2a, 0x02, 0x11, 0x01, 0x01, 0x05,
- 0x00, 0x04, 0x82, 0x01, 0x82, 0x48, 0x6d, 0xcf,
- 0x16, 0xb5, 0x50, 0x95, 0x36, 0xbf, 0x47, 0x27,
- 0x50, 0x58, 0x0d, 0xa2, 0x52, 0x7e, 0x25, 0xab,
- 0x14, 0x1a, 0x26, 0x5e, 0x2d, 0x8a, 0x23, 0x90,
- 0x60, 0x7f, 0x12, 0x20, 0x56, 0xd1, 0x43, 0xa2,
- 0x6b, 0x47, 0x5d, 0xed, 0x9d, 0xd4, 0xe5, 0x83,
- 0x28, 0x89, 0xc2, 0x16, 0x4c, 0x76, 0x06, 0xad,
- 0x8e, 0x8c, 0x29, 0x1a, 0x9b, 0x0f, 0xdd, 0x60,
- 0x4b, 0xb4, 0x62, 0x82, 0x9e, 0x4a, 0x63, 0x83,
- 0x2e, 0xd2, 0x43, 0x78, 0xc2, 0x32, 0x1f, 0x60,
- 0xa9, 0x8a, 0x7f, 0x0f, 0x7c, 0xa6, 0x1d, 0xe6,
- 0x92, 0x9e, 0x52, 0xc7, 0x7d, 0xbb, 0x35, 0x3b,
- 0xaa, 0x89, 0x73, 0x4c, 0xfb, 0x99, 0x54, 0x97,
- 0x99, 0x28, 0x6e, 0x66, 0x5b, 0xf7, 0x9b, 0x7e,
- 0x6d, 0x8a, 0x2f, 0xfa, 0xc3, 0x1e, 0x71, 0xb9,
- 0xbd, 0x8f, 0xc5, 0x63, 0x25, 0x31, 0x20, 0x02,
- 0xff, 0x02, 0xf0, 0xc9, 0x2c, 0xdd, 0x3a, 0x10,
- 0x30, 0xab, 0xe5, 0xad, 0x3d, 0x1a, 0x82, 0x77,
- 0x46, 0xed, 0x03, 0x38, 0xa4, 0x73, 0x6d, 0x36,
- 0x36, 0x33, 0x70, 0xb2, 0x63, 0x20, 0xca, 0x03,
- 0xbf, 0x5a, 0xf4, 0x7c, 0x35, 0xf0, 0x63, 0x1a,
- 0x12, 0x33, 0x12, 0x58, 0xd9, 0xa2, 0x63, 0x6b,
- 0x63, 0x82, 0x41, 0x65, 0x70, 0x37, 0x4b, 0x99,
- 0x04, 0x9f, 0xdd, 0x5e, 0x07, 0x01, 0x95, 0x9f,
- 0x36, 0xe8, 0xc3, 0x66, 0x2a, 0x21, 0x69, 0x68,
- 0x40, 0xe6, 0xbc, 0xbb, 0x85, 0x81, 0x21, 0x13,
- 0xe6, 0xa4, 0xcf, 0xd3, 0x67, 0xe3, 0xfd, 0x75,
- 0xf0, 0xdf, 0x83, 0xe0, 0xc5, 0x36, 0x09, 0xac,
- 0x1b, 0xd4, 0xf7, 0x2a, 0x23, 0x57, 0x1c, 0x5c,
- 0x0f, 0xf4, 0xcf, 0xa2, 0xcf, 0xf5, 0xbd, 0x9c,
- 0x69, 0x98, 0x78, 0x3a, 0x25, 0xe4, 0xfd, 0x85,
- 0x11, 0xcc, 0x7d, 0xef, 0xeb, 0x74, 0x60, 0xb1,
- 0xb7, 0xfb, 0x1f, 0x0e, 0x62, 0xff, 0xfe, 0x09,
- 0x0a, 0xc3, 0x80, 0x2f, 0x10, 0x49, 0x89, 0x78,
- 0xd2, 0x08, 0xfa, 0x89, 0x22, 0x45, 0x91, 0x21,
- 0xbc, 0x90, 0x3e, 0xad, 0xb3, 0x0a, 0xb4, 0x0e,
- 0x1c, 0xa1, 0x93, 0x92, 0xd8, 0x72, 0x07, 0x54,
- 0x60, 0xe7, 0x91, 0xfc, 0xd9, 0x3c, 0xe1, 0x6f,
- 0x08, 0xe4, 0x56, 0xf6, 0x0b, 0xb0, 0x3c, 0x39,
- 0x8a, 0x2d, 0x48, 0x44, 0x28, 0x13, 0xca, 0xe9,
- 0xf7, 0xa3, 0xb6, 0x8a, 0x5f, 0x31, 0xa9, 0x72,
- 0xf2, 0xde, 0x96, 0xf2, 0xb1, 0x53, 0xb1, 0x3e,
- 0x24, 0x57, 0xfd, 0x18, 0x45, 0x1f, 0xc5, 0x33,
- 0x1b, 0xa4, 0xe8, 0x21, 0xfa, 0x0e, 0xb2, 0xb9,
- 0xcb, 0xc7, 0x07, 0x41, 0xdd, 0x2f, 0xb6, 0x6a,
- 0x23, 0x18, 0xed, 0xc1, 0xef, 0xe2, 0x4b, 0xec,
- 0xc9, 0xba, 0xfb, 0x46, 0x43, 0x90, 0xd7, 0xb5,
- 0x68, 0x28, 0x31, 0x2b, 0x8d, 0xa8, 0x51, 0x63,
- 0xf7, 0x53, 0x99, 0x19, 0x68, 0x85, 0x66, 0x00,
- 0x00, 0x00, 0x01, 0x00, 0x05, 0x58, 0x2e, 0x35,
- 0x30, 0x39, 0x00, 0x00, 0x02, 0x3a, 0x30, 0x82,
- 0x02, 0x36, 0x30, 0x82, 0x01, 0xe0, 0xa0, 0x03,
- 0x02, 0x01, 0x02, 0x02, 0x04, 0x48, 0x59, 0xf1,
- 0x92, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
- 0x30, 0x81, 0xa0, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4b, 0x52,
- 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
- 0x08, 0x13, 0x0a, 0x4b, 0x79, 0x75, 0x6e, 0x67,
- 0x67, 0x69, 0x2d, 0x64, 0x6f, 0x31, 0x14, 0x30,
- 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0b,
- 0x53, 0x65, 0x6f, 0x6e, 0x67, 0x6e, 0x61, 0x6d,
- 0x2d, 0x73, 0x69, 0x31, 0x1a, 0x30, 0x18, 0x06,
- 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x54, 0x68,
- 0x65, 0x20, 0x4e, 0x65, 0x74, 0x74, 0x79, 0x20,
- 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x31,
- 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x0f, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c,
- 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x73, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x27, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x65, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x65,
- 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e,
- 0x65, 0x74, 0x74, 0x79, 0x2e, 0x67, 0x6c, 0x65,
- 0x61, 0x6d, 0x79, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
- 0x6e, 0x65, 0x74, 0x30, 0x20, 0x17, 0x0d, 0x30,
- 0x38, 0x30, 0x36, 0x31, 0x39, 0x30, 0x35, 0x34,
- 0x31, 0x33, 0x38, 0x5a, 0x18, 0x0f, 0x32, 0x31,
- 0x38, 0x37, 0x31, 0x31, 0x32, 0x34, 0x30, 0x35,
- 0x34, 0x31, 0x33, 0x38, 0x5a, 0x30, 0x81, 0xa0,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
- 0x06, 0x13, 0x02, 0x4b, 0x52, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a,
- 0x4b, 0x79, 0x75, 0x6e, 0x67, 0x67, 0x69, 0x2d,
- 0x64, 0x6f, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x04, 0x07, 0x13, 0x0b, 0x53, 0x65, 0x6f,
- 0x6e, 0x67, 0x6e, 0x61, 0x6d, 0x2d, 0x73, 0x69,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x11, 0x54, 0x68, 0x65, 0x20, 0x4e,
- 0x65, 0x74, 0x74, 0x79, 0x20, 0x50, 0x72, 0x6f,
- 0x6a, 0x65, 0x63, 0x74, 0x31, 0x18, 0x30, 0x16,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0f, 0x45,
- 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x31, 0x30,
- 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x63,
- 0x68, 0x61, 0x74, 0x2e, 0x65, 0x78, 0x61, 0x6d,
- 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x74,
- 0x79, 0x2e, 0x67, 0x6c, 0x65, 0x61, 0x6d, 0x79,
- 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x65, 0x74,
- 0x30, 0x5c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x4b, 0x00, 0x30, 0x48, 0x02, 0x41,
- 0x00, 0xc3, 0xe3, 0x5e, 0x41, 0xa7, 0x87, 0x11,
- 0x00, 0x42, 0x2a, 0xb0, 0x4b, 0xed, 0xb2, 0xe0,
- 0x23, 0xdb, 0xb1, 0x3d, 0x58, 0x97, 0x35, 0x60,
- 0x0b, 0x82, 0x59, 0xd3, 0x00, 0xea, 0xd4, 0x61,
- 0xb8, 0x79, 0x3f, 0xb6, 0x3c, 0x12, 0x05, 0x93,
- 0x2e, 0x9a, 0x59, 0x68, 0x14, 0x77, 0x3a, 0xc8,
- 0x50, 0x25, 0x57, 0xa4, 0x49, 0x18, 0x63, 0x41,
- 0xf0, 0x2d, 0x28, 0xec, 0x06, 0xfb, 0xb4, 0x9f,
- 0xbf, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x41, 0x00,
- 0x65, 0x6c, 0x30, 0x01, 0xc2, 0x8e, 0x3e, 0xcb,
- 0xb3, 0x77, 0x48, 0xe9, 0x66, 0x61, 0x9a, 0x40,
- 0x86, 0xaf, 0xf6, 0x03, 0xeb, 0xba, 0x6a, 0xf2,
- 0xfd, 0xe2, 0xaf, 0x36, 0x5e, 0x7b, 0xaa, 0x22,
- 0x04, 0xdd, 0x2c, 0x20, 0xc4, 0xfc, 0xdd, 0xd0,
- 0x82, 0x20, 0x1c, 0x3d, 0xd7, 0x9e, 0x5e, 0x5c,
- 0x92, 0x5a, 0x76, 0x71, 0x28, 0xf5, 0x07, 0x7d,
- 0xa2, 0x81, 0xba, 0x77, 0x9f, 0x2a, 0xd9, 0x44,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x6d, 0x79,
- 0x6b, 0x65, 0x79, 0x00, 0x00, 0x01, 0x1a, 0x9f,
- 0x5b, 0x56, 0xa0, 0x00, 0x00, 0x01, 0x99, 0x30,
- 0x82, 0x01, 0x95, 0x30, 0x0e, 0x06, 0x0a, 0x2b,
- 0x06, 0x01, 0x04, 0x01, 0x2a, 0x02, 0x11, 0x01,
- 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x81, 0x29,
- 0xa8, 0xb6, 0x08, 0x0c, 0x85, 0x75, 0x3e, 0xdd,
- 0xb5, 0xe5, 0x1a, 0x87, 0x68, 0xd1, 0x90, 0x4b,
- 0x29, 0x31, 0xee, 0x90, 0xbc, 0x9d, 0x73, 0xa0,
- 0x3f, 0xe9, 0x0b, 0xa4, 0xef, 0x30, 0x9b, 0x36,
- 0x9a, 0xb2, 0x54, 0x77, 0x81, 0x07, 0x4b, 0xaa,
- 0xa5, 0x77, 0x98, 0xe1, 0xeb, 0xb5, 0x7c, 0x4e,
- 0x48, 0xd5, 0x08, 0xfc, 0x2c, 0x36, 0xe2, 0x65,
- 0x03, 0xac, 0xe5, 0xf3, 0x96, 0xb7, 0xd0, 0xb5,
- 0x3b, 0x92, 0xe4, 0x14, 0x05, 0x7a, 0x6a, 0x92,
- 0x56, 0xfe, 0x4e, 0xab, 0xd3, 0x0e, 0x32, 0x04,
- 0x22, 0x22, 0x74, 0x47, 0x7d, 0xec, 0x21, 0x99,
- 0x30, 0x31, 0x64, 0x46, 0x64, 0x9b, 0xc7, 0x13,
- 0xbf, 0xbe, 0xd0, 0x31, 0x49, 0xe7, 0x3c, 0xbf,
- 0xba, 0xb1, 0x20, 0xf9, 0x42, 0xf4, 0xa9, 0xa9,
- 0xe5, 0x13, 0x65, 0x32, 0xbf, 0x7c, 0xcc, 0x91,
- 0xd3, 0xfd, 0x24, 0x47, 0x0b, 0xe5, 0x53, 0xad,
- 0x50, 0x30, 0x56, 0xd1, 0xfa, 0x9c, 0x37, 0xa8,
- 0xc1, 0xce, 0xf6, 0x0b, 0x18, 0xaa, 0x7c, 0xab,
- 0xbd, 0x1f, 0xdf, 0xe4, 0x80, 0xb8, 0xa7, 0xe0,
- 0xad, 0x7d, 0x50, 0x74, 0xf1, 0x98, 0x78, 0xbc,
- 0x58, 0xb9, 0xc2, 0x52, 0xbe, 0xd2, 0x5b, 0x81,
- 0x94, 0x83, 0x8f, 0xb9, 0x4c, 0xee, 0x01, 0x2b,
- 0x5e, 0xc9, 0x6e, 0x9b, 0xf5, 0x63, 0x69, 0xe4,
- 0xd8, 0x0b, 0x47, 0xd8, 0xfd, 0xd8, 0xe0, 0xed,
- 0xa8, 0x27, 0x03, 0x74, 0x1e, 0x5d, 0x32, 0xe6,
- 0x5c, 0x63, 0xc2, 0xfb, 0x3f, 0xee, 0xb4, 0x13,
- 0xc6, 0x0e, 0x6e, 0x74, 0xe0, 0x22, 0xac, 0xce,
- 0x79, 0xf9, 0x43, 0x68, 0xc1, 0x03, 0x74, 0x2b,
- 0xe1, 0x18, 0xf8, 0x7f, 0x76, 0x9a, 0xea, 0x82,
- 0x3f, 0xc2, 0xa6, 0xa7, 0x4c, 0xfe, 0xae, 0x29,
- 0x3b, 0xc1, 0x10, 0x7c, 0xd5, 0x77, 0x17, 0x79,
- 0x5f, 0xcb, 0xad, 0x1f, 0xd8, 0xa1, 0xfd, 0x90,
- 0xe1, 0x6b, 0xb2, 0xef, 0xb9, 0x41, 0x26, 0xa4,
- 0x0b, 0x4f, 0xc6, 0x83, 0x05, 0x6f, 0xf0, 0x64,
- 0x40, 0xe1, 0x44, 0xc4, 0xf9, 0x40, 0x2b, 0x3b,
- 0x40, 0xdb, 0xaf, 0x35, 0xa4, 0x9b, 0x9f, 0xc4,
- 0x74, 0x07, 0xe5, 0x18, 0x60, 0xc5, 0xfe, 0x15,
- 0x0e, 0x3a, 0x25, 0x2a, 0x11, 0xee, 0x78, 0x2f,
- 0xb8, 0xd1, 0x6e, 0x4e, 0x3c, 0x0a, 0xb5, 0xb9,
- 0x40, 0x86, 0x27, 0x6d, 0x8f, 0x53, 0xb7, 0x77,
- 0x36, 0xec, 0x5d, 0xed, 0x32, 0x40, 0x43, 0x82,
- 0xc3, 0x52, 0x58, 0xc4, 0x26, 0x39, 0xf3, 0xb3,
- 0xad, 0x58, 0xab, 0xb7, 0xf7, 0x8e, 0x0e, 0xba,
- 0x8e, 0x78, 0x9d, 0xbf, 0x58, 0x34, 0xbd, 0x77,
- 0x73, 0xa6, 0x50, 0x55, 0x00, 0x60, 0x26, 0xbf,
- 0x6d, 0xb4, 0x98, 0x8a, 0x18, 0x83, 0x89, 0xf8,
- 0xcd, 0x0d, 0x49, 0x06, 0xae, 0x51, 0x6e, 0xaf,
- 0xbd, 0xe2, 0x07, 0x13, 0xd8, 0x64, 0xcc, 0xbf,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x58, 0x2e,
- 0x35, 0x30, 0x39, 0x00, 0x00, 0x02, 0x34, 0x30,
- 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xda, 0xa0,
- 0x03, 0x02, 0x01, 0x02, 0x02, 0x04, 0x48, 0x59,
- 0xf2, 0x84, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
- 0x00, 0x30, 0x81, 0x9d, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4b,
- 0x52, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
- 0x04, 0x08, 0x13, 0x0a, 0x4b, 0x79, 0x75, 0x6e,
- 0x67, 0x67, 0x69, 0x2d, 0x64, 0x6f, 0x31, 0x14,
- 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13,
- 0x0b, 0x53, 0x65, 0x6f, 0x6e, 0x67, 0x6e, 0x61,
- 0x6d, 0x2d, 0x73, 0x69, 0x31, 0x1a, 0x30, 0x18,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x54,
- 0x68, 0x65, 0x20, 0x4e, 0x65, 0x74, 0x74, 0x79,
- 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
- 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72,
- 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x31,
- 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65,
- 0x63, 0x68, 0x61, 0x74, 0x2e, 0x65, 0x78, 0x61,
- 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74,
- 0x74, 0x79, 0x2e, 0x67, 0x6c, 0x65, 0x61, 0x6d,
- 0x79, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x6e, 0x65,
- 0x74, 0x30, 0x20, 0x17, 0x0d, 0x30, 0x38, 0x30,
- 0x36, 0x31, 0x39, 0x30, 0x35, 0x34, 0x35, 0x34,
- 0x30, 0x5a, 0x18, 0x0f, 0x32, 0x31, 0x38, 0x37,
- 0x31, 0x31, 0x32, 0x33, 0x30, 0x35, 0x34, 0x35,
- 0x34, 0x30, 0x5a, 0x30, 0x81, 0x9d, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x4b, 0x52, 0x31, 0x13, 0x30, 0x11, 0x06,
- 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x4b, 0x79,
- 0x75, 0x6e, 0x67, 0x67, 0x69, 0x2d, 0x64, 0x6f,
- 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04,
- 0x07, 0x13, 0x0b, 0x53, 0x65, 0x6f, 0x6e, 0x67,
- 0x6e, 0x61, 0x6d, 0x2d, 0x73, 0x69, 0x31, 0x1a,
- 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x11, 0x54, 0x68, 0x65, 0x20, 0x4e, 0x65, 0x74,
- 0x74, 0x79, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65,
- 0x63, 0x74, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03,
- 0x55, 0x04, 0x0b, 0x13, 0x0c, 0x43, 0x6f, 0x6e,
- 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72,
- 0x73, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x27, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x65, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x65,
- 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x6e,
- 0x65, 0x74, 0x74, 0x79, 0x2e, 0x67, 0x6c, 0x65,
- 0x61, 0x6d, 0x79, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
- 0x6e, 0x65, 0x74, 0x30, 0x5c, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x4b, 0x00, 0x30,
- 0x48, 0x02, 0x41, 0x00, 0x95, 0xb3, 0x47, 0x17,
- 0x95, 0x0f, 0x57, 0xcf, 0x66, 0x72, 0x0a, 0x7e,
- 0x5b, 0x54, 0xea, 0x8c, 0x6f, 0x79, 0xde, 0x94,
- 0xac, 0x0b, 0x5a, 0xd4, 0xd6, 0x1b, 0x58, 0x12,
- 0x1a, 0x16, 0x3d, 0xfe, 0xdf, 0xa5, 0x2b, 0x86,
- 0xbc, 0x64, 0xd4, 0x80, 0x1e, 0x3f, 0xf9, 0xe2,
- 0x04, 0x03, 0x79, 0x9b, 0xc1, 0x5c, 0xf0, 0xf1,
- 0xf3, 0xf1, 0xe3, 0xbf, 0x3f, 0xc0, 0x1f, 0xdd,
- 0xdb, 0xc0, 0x5b, 0x21, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
- 0x03, 0x41, 0x00, 0x02, 0xd7, 0xdd, 0xbd, 0x0c,
- 0x8e, 0x21, 0x20, 0xef, 0x9e, 0x4f, 0x1f, 0xf5,
- 0x49, 0xf1, 0xae, 0x58, 0x9b, 0x94, 0x3a, 0x1f,
- 0x70, 0x33, 0xf0, 0x9b, 0xbb, 0xe9, 0xc0, 0xf3,
- 0x72, 0xcb, 0xde, 0xb6, 0x56, 0x72, 0xcc, 0x1c,
- 0xf0, 0xd6, 0x5a, 0x2a, 0xbc, 0xa1, 0x7e, 0x23,
- 0x83, 0xe9, 0xe7, 0xcf, 0x9e, 0xa5, 0xf9, 0xcc,
- 0xc2, 0x61, 0xf4, 0xdb, 0x40, 0x93, 0x1d, 0x63,
- 0x8a, 0x50, 0x4c, 0x11, 0x39, 0xb1, 0x91, 0xc1,
- 0xe6, 0x9d, 0xd9, 0x1a, 0x62, 0x1b, 0xb8, 0xd3,
- 0xd6, 0x9a, 0x6d, 0xb9, 0x8e, 0x15, 0x51 )
-}
diff --git a/akka-core/src/main/scala/remote/RemoteClient.scala b/akka-core/src/main/scala/remote/RemoteClient.scala
index 5e90f3585b..c90d472c09 100644
--- a/akka-core/src/main/scala/remote/RemoteClient.scala
+++ b/akka-core/src/main/scala/remote/RemoteClient.scala
@@ -250,26 +250,27 @@ class RemoteClientPipelineFactory(name: String,
timer: HashedWheelTimer,
client: RemoteClient) extends ChannelPipelineFactory {
def getPipeline: ChannelPipeline = {
+ def join(ch: ChannelHandler*) = Array[ChannelHandler](ch:_*)
+
val engine = RemoteServerSslContext.client.createSSLEngine()
engine.setEnabledCipherSuites(engine.getSupportedCipherSuites) //TODO is this sensible?
engine.setUseClientMode(true)
- val ssl = new SslHandler(engine)
- val timeout = new ReadTimeoutHandler(timer, RemoteClient.READ_TIMEOUT)
- val lenDec = new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4)
- val lenPrep = new LengthFieldPrepender(4)
+ val ssl = if(RemoteServer.SECURE) join(new SslHandler(engine)) else join()
+ val timeout = new ReadTimeoutHandler(timer, RemoteClient.READ_TIMEOUT)
+ val lenDec = new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4)
+ val lenPrep = new LengthFieldPrepender(4)
val protobufDec = new ProtobufDecoder(RemoteReplyProtocol.getDefaultInstance)
val protobufEnc = new ProtobufEncoder
- val zipCodec = RemoteServer.COMPRESSION_SCHEME match {
- case "zlib" => Some(Codec(new ZlibEncoder(RemoteServer.ZLIB_COMPRESSION_LEVEL), new ZlibDecoder))
- //case "lzf" => Some(Codec(new LzfEncoder, new LzfDecoder))
- case _ => None
+ val(enc,dec) = RemoteServer.COMPRESSION_SCHEME match {
+ case "zlib" => (join(new ZlibEncoder(RemoteServer.ZLIB_COMPRESSION_LEVEL)),join(new ZlibDecoder))
+ case _ => (join(),join())
}
+
val remoteClient = new RemoteClientHandler(name, futures, supervisors, bootstrap, remoteAddress, timer, client)
- val stages: Array[ChannelHandler] =
- zipCodec.map(codec => Array(ssl, timeout, codec.decoder, lenDec, protobufDec, codec.encoder, lenPrep, protobufEnc, remoteClient))
- .getOrElse(Array(ssl, timeout, lenDec, protobufDec, lenPrep, protobufEnc, remoteClient))
+ val stages = ssl ++ join(timeout) ++ dec ++ join(lenDec, protobufDec) ++ enc ++ join(lenPrep, protobufEnc, remoteClient)
+
new StaticChannelPipeline(stages: _*)
}
}
@@ -348,20 +349,24 @@ class RemoteClientHandler(val name: String,
}
override def channelConnected(ctx: ChannelHandlerContext, event: ChannelStateEvent) = {
+ def connect = {
+ client.listeners.toArray.foreach(l => l.asInstanceOf[ActorRef] ! RemoteClientConnected(client.hostname, client.port))
+ log.debug("Remote client connected to [%s]", ctx.getChannel.getRemoteAddress)
+ }
-// client.listeners.toArray.foreach(l =>
-// l.asInstanceOf[ActorRef] ! RemoteClientConnected(client.hostname, client.port))
-// log.debug("Remote client connected to [%s]", ctx.getChannel.getRemoteAddress)
-
- val sslHandler : SslHandler = ctx.getPipeline.get(classOf[SslHandler])
- sslHandler.handshake().addListener( new ChannelFutureListener {
+ if(RemoteServer.SECURE){
+ val sslHandler : SslHandler = ctx.getPipeline.get(classOf[SslHandler])
+ sslHandler.handshake().addListener( new ChannelFutureListener {
def operationComplete(future : ChannelFuture) : Unit = {
- if(future.isSuccess) {
- client.listeners.toArray.foreach(l => l.asInstanceOf[ActorRef] ! RemoteClientConnected(client.hostname, client.port))
- log.debug("Remote client connected to [%s]", ctx.getChannel.getRemoteAddress)
- }
+ if(future.isSuccess)
+ connect
+ //else
+ //FIXME: What is the correct action here?
}
})
+ } else {
+ connect
+ }
}
override def channelDisconnected(ctx: ChannelHandlerContext, event: ChannelStateEvent) = {
diff --git a/akka-core/src/main/scala/remote/RemoteServer.scala b/akka-core/src/main/scala/remote/RemoteServer.scala
index 1b646e1fe9..93386311f2 100644
--- a/akka-core/src/main/scala/remote/RemoteServer.scala
+++ b/akka-core/src/main/scala/remote/RemoteServer.scala
@@ -75,6 +75,32 @@ object RemoteServer {
level
}
+ val SECURE = {
+ if(config.getBool("akka.remote.ssl.service",false)){
+
+ val properties = List(
+ ("key-store-type" ,"keyStoreType"),
+ ("key-store" ,"keyStore"),
+ ("key-store-pass" ,"keyStorePassword"),
+ ("trust-store-type","trustStoreType"),
+ ("trust-store" ,"trustStore"),
+ ("trust-store-pass","trustStorePassword")
+ ).map(x => ("akka.remote.ssl." + x._1,"javax.net.ssl."+x._2))
+
+ //If property is not set, and we have a value from our akka.conf, use that value
+ for{ p <- properties if System.getProperty(p._2) eq null
+ c <- config.getString(p._1)
+ } System.setProperty(p._2,c)
+
+ if(config.getBool("akka.remote.ssl.debug",false))
+ System.setProperty("javax.net.debug","ssl")
+
+ true
+ }
+ else
+ false
+ }
+
object Address {
def apply(hostname: String, port: Int) = new Address(hostname, port)
}
@@ -279,30 +305,20 @@ class RemoteServer extends Logging {
}
}
-case class Codec(encoder: ChannelHandler, decoder: ChannelHandler)
-
object RemoteServerSslContext {
- import java.security.{KeyStore,Security}
- import javax.net.ssl.{KeyManager,KeyManagerFactory,SSLContext,TrustManagerFactory}
+ import javax.net.ssl.SSLContext
val (client,server) = {
val protocol = "TLS"
- val algorithm = Option(Security.getProperty("ssl.KeyManagerFactory.algorithm")).getOrElse("SunX509")
- val store = KeyStore.getInstance("JKS")
- store.load(DummyKeyStore.asInputStream,DummyKeyStore.getKeyStorePassword) //TODO replace with getResourceAsStream + config-pass
-
- val keyMan = KeyManagerFactory.getInstance(algorithm)
- keyMan.init(store, DummyKeyStore.getCertificatePassword) //TODO replace with config-pass
-
- //val trustMan = TrustManagerFactory.getInstance("SunX509");
- //trustMan.init(store) //TODO safe to use same keystore? Or should use it's own keystore?
+ //val algorithm = Option(Security.getProperty("ssl.KeyManagerFactory.algorithm")).getOrElse("SunX509")
+ //val store = KeyStore.getInstance("JKS")
val s = SSLContext.getInstance(protocol)
- s.init(keyMan.getKeyManagers, null, null)
+ s.init(null,null,null)
val c = SSLContext.getInstance(protocol)
- c.init(null, DummyTrustManagerFactory.getTrustManagers, null) //TODO replace with TrustManagerFactory
-
+ c.init(null,null,null)
+
(c,s)
}
}
@@ -319,25 +335,26 @@ class RemoteServerPipelineFactory(
import RemoteServer._
def getPipeline: ChannelPipeline = {
+ def join(ch: ChannelHandler*) = Array[ChannelHandler](ch:_*)
+
val engine = RemoteServerSslContext.server.createSSLEngine()
engine.setEnabledCipherSuites(engine.getSupportedCipherSuites) //TODO is this sensible?
engine.setUseClientMode(false)
- val ssl = new SslHandler(engine)
- val lenDec = new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4)
- val lenPrep = new LengthFieldPrepender(4)
- val protobufDec = new ProtobufDecoder(RemoteRequestProtocol.getDefaultInstance)
- val protobufEnc = new ProtobufEncoder
- val zipCodec = RemoteServer.COMPRESSION_SCHEME match {
- case "zlib" => Some(Codec(new ZlibEncoder(RemoteServer.ZLIB_COMPRESSION_LEVEL), new ZlibDecoder))
- //case "lzf" => Some(Codec(new LzfEncoder, new LzfDecoder))
- case _ => None
+ val ssl = if(RemoteServer.SECURE) join(new SslHandler(engine)) else join()
+ val lenDec = new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4)
+ val lenPrep = new LengthFieldPrepender(4)
+ val protobufDec = new ProtobufDecoder(RemoteRequestProtocol.getDefaultInstance)
+ val protobufEnc = new ProtobufEncoder
+ val(enc,dec) = RemoteServer.COMPRESSION_SCHEME match {
+ case "zlib" => (join(new ZlibEncoder(RemoteServer.ZLIB_COMPRESSION_LEVEL)),join(new ZlibDecoder))
+ case _ => (join(),join())
}
+
val remoteServer = new RemoteServerHandler(name, openChannels, loader, actors, activeObjects)
- val stages: Array[ChannelHandler] =
- zipCodec.map(codec => Array(ssl,codec.decoder, lenDec, protobufDec, codec.encoder, lenPrep, protobufEnc, remoteServer))
- .getOrElse(Array(ssl,lenDec, protobufDec, lenPrep, protobufEnc, remoteServer))
+ val stages = ssl ++ dec ++ join(lenDec, protobufDec) ++ enc ++ join(lenPrep, protobufEnc, remoteServer)
+
new StaticChannelPipeline(stages: _*)
}
}
@@ -365,17 +382,19 @@ class RemoteServerHandler(
}
override def channelConnected(ctx : ChannelHandlerContext, e : ChannelStateEvent) {
- val sslHandler : SslHandler = ctx.getPipeline.get(classOf[SslHandler])
+ if(RemoteServer.SECURE) {
+ val sslHandler : SslHandler = ctx.getPipeline.get(classOf[SslHandler])
- // Begin handshake.
- sslHandler.handshake().addListener( new ChannelFutureListener {
- def operationComplete(future : ChannelFuture) : Unit = {
- if(future.isSuccess)
- openChannels.add(future.getChannel)
- else
- future.getChannel.close
- }
- })
+ // Begin handshake.
+ sslHandler.handshake().addListener( new ChannelFutureListener {
+ def operationComplete(future : ChannelFuture) : Unit = {
+ if(future.isSuccess)
+ openChannels.add(future.getChannel)
+ else
+ future.getChannel.close
+ }
+ })
+ }
}
diff --git a/config/akka-reference.conf b/config/akka-reference.conf
index e20a745ca1..c96782406b 100644
--- a/config/akka-reference.conf
+++ b/config/akka-reference.conf
@@ -64,6 +64,23 @@
compression-scheme = "zlib" # Options: "zlib" (lzf to come), leave out for no compression
zlib-compression-level = 6 # Options: 0-9 (1 being fastest and 9 being the most compressed), default is 6
+
+ service = off #on / off
+
+ #You can either use java command-line options or use the settings below
+
+ #key-store-type = "pkcs12" #Same as -Djavax.net.ssl.keyStoreType=pkcs12
+ #key-store = "yourcertificate.p12" #Same as -Djavax.net.ssl.keyStore=yourcertificate.p12
+ #key-store-pass = "$PASS" #Same as -Djavax.net.ssl.keyStorePassword=$PASS
+
+ #trust-store-type = "jks" #Same as -Djavax.net.ssl.trustStoreType=jks
+ #trust-store = "your.keystore" #Same as -Djavax.net.ssl.trustStore=your.keystore
+ #trust-store-pass = "$PASS" #-Djavax.net.ssl.trustStorePassword=$PASS
+
+ #This can be useful for debugging
+ debug = off #if on, very verbose debug, same as -Djavax.net.debug=ssl
+
+
service = on
name = "default" # The name of the cluster