我目前正在研究使用Akka远程演员进行通信的客户端/服务器应用程序的设置。作为该设置的一部分,我想启用内置的ssl模式,这是通过netty支持的。
然而,我并不完全确定如何准确设置参数,即使我已经尝试了许多不同的组合。
我使用http://doc.akka.io/docs/akka/2.2.0/java/remoting.html作为不同参数的参考。
关于创建密钥库和信任库,我使用了此链接中的指南: http://www.ibm.com/developerworks/library/j-customssl/sidebar.html
我的配置的相关部分在客户端上显示如下:
remote {
enabled-transports = ["akka.remote.netty.ssl"]
netty.ssl {
host = ""
port = 0
enable-ssl = true
}
netty.ssl.security {
key-store = "ServiceTesterClientKeys"
trust-store = "clientTrust"
key-store-password = "XX"
key-password = "XX"
trust-store-password = "YY"
protocol = "TLSv1"
random-number-generator = "AES128CounterSecureRNG"
enabled-algorithms = [TLS_RSA_WITH_AES_128_CBC_SHA]
}
}
并在服务器上这样:
remote {
enabled-transports = ["akka.remote.netty.ssl"]
netty.ssl {
hostname = ""
port = 2562
enable-ssl = true
}
netty.ssl.security {
key-store = "serverKeys"
trust-store = "serverTrust"
key-store-password = "YY"
key-password = "YY"
trust-store-password = "XX"
protocol = "TLSv1"
random-number-generator = "AES128CounterSecureRNG"
enabled-algorithms = [TLS_RSA_WITH_AES_128_CBC_SHA]
}
}
我是否需要添加属性,或者只要Akka在类路径上就可以找到它?
-Djavax.net.ssl.keyStore=A
-Djavax.net.ssl.trustStore=B
在运行时我得到一个很长的堆栈,但在开始时它说:
[MySystem-akka.actor.default-dispatcher-11] ERROR akka.remote.EndpointWriter - AssociationError [akka.ssl.tcp://MySystem@10.195.20.11:10693] - > [akka.ssl.tcp:// MyServerSystem @ localhost:2562]:错误[关联失败[akka.ssl.tcp:// MyServerSystem @ localhost:2562]] [ akka.remote.EndpointAssociationException:关联失败[akka.ssl.tcp:// MyServerSystem @ localhost:2562]
引起:akka.remote.transport.netty.NettyTransport $$ anonfun $ associate $ 1 $$ anon $ 2:无法初始化管道。
引起:akka.remote.RemoteTransportException:无法建立客户端SSL连接,因为无法构造SSL上下文。
非常感谢帮助。 关心Stefan
答案 0 :(得分:3)
好的,我已经进一步研究了这个问题。
问题与random-number-generator =“AES128CounterSecureRNG”属性有关。 相反,我选择使用默认实现。
如果我想使用此实现,我想我需要添加提供程序。
对于那些感谢您的时间的人。