与 Akka 使用 SSL 连接 - 无法使配置工作

Ste*_*anE 5 java ssl keystore akka

我目前正在研究使用 Akka 远程角色进行通信的客户端/服务器应用程序的设置。作为该设置的一部分,我想启用通过 netty 支持的内置 ssl 模式。

但是,尽管我尝试了多种不同的组合,但我并不完全确定如何准确设置参数。

我已经使用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]
}
}
Run Code Online (Sandbox Code Playgroud)

在服务器上是这样的:

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]
 }
 }
Run Code Online (Sandbox Code Playgroud)

我需要添加属性还是只要它在类路径上,Akka 就可以找到它?

-Djavax.net.ssl.keyStore=A
-Djavax.net.ssl.trustStore=B
Run Code Online (Sandbox Code Playgroud)

在运行时,我得到了一个很长的堆栈,但一开始它说:

[MySystem-akka.actor.default-dispatcher-11] 错误 akka.remote.EndpointWriter - AssociationError [akka.ssl.tcp://MySystem@10.195.20.11:10693] -> [akka.ssl.tcp://MyServerSystem @localhost:2562]: 错误 [Association failed with [akka.ssl.tcp://MyServerSystem@localhost:2562]] [akka.remote.EndpointAssociationException: Association failed with [akka.ssl.tcp://MyServerSystem@localhost:第2562章

引起:akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$anon$2:未能初始化管道。

引起:akka.remote.RemoteTransportException:无法建立客户端 SSL 连接,因为无法构建 SSL 上下文。

非常感谢帮助。问候斯蒂芬

Ste*_*anE 4

好的,我已经进一步研究了这个问题。

该问题与随机数生成器 =“AES128CounterSecureRNG”属性有关。相反,我选择使用默认实现。

我想如果我想使用这个实现,我将需要添加提供者。

对于那些看过的人,感谢您抽出时间。