Akka 2.3.14和Java 7如何配置TLS
我是Akka的新手,我实现了一个侦听设备流量的TCP服务器。我在网上搜索过,找不到任何关于如何使用Akka IO配置TLS的参考或具体示例
我的用例是,我应该能够配置多个端口,并有可能指向不同的密钥存储
我不确定我是否错过了显而易见的东西
我想我没有解释清楚,所以这里是细节
给你一个我的工作背景和我的困境
我已经使用Akka IO开发了我的POC,我也在使用Akka v2。3.14和Java 7
我想要达到的是 -我应该能够配置有或没有TLS的新服务器端口 -每个TLS端口都应该能够指向证书的唯一密钥存储文件
参与者创建路径
下面是创建的一些重要角色的路径
TCPProxyService类创建ActorSystem并加载端口配置,然后创建ProxyServiceActor。 ProxyServiceActor绑定到端口(下面的代码)。当ProxyServiceActor接收到连接时,它将创建ProxyServiceActor并 ProxyActor intern创建ProxyListGenerator和ProxySenderActor,并将ProxyListGenerator注册到tcpManager(tcpManager=Tcp.get(getSystem())。经理()
TCPProxyService ----> ProxyServiceActor(binds to the given server port) ----> ProxyActor ----> ProxyListenerActor (registered TCP listener, listens on the client port ) ----> ProxySenderActor
示例代码
下面定义的类(ProxyServiceActor)是绑定到从使用SpringBeans配置的ProxyConfig实例接收的端口的类。xml
public class ProxyServiceActor extends UntypedActor {
. . . .
@Override
public void preStart() throws Exception {
LOGGER.info("Listening on port = " + proxyConfig.getPort());
tcpManager.tell(TcpMessage.bind(getSelf(), new InetSocketAddress(proxyConfig.getListenIP(), proxyConfig.getPort()), backlog), getSelf());
}
public void onReceive(Object msg) throws Exception {
if (msg instanceof Connected) {
. . . .
ActorRef proxy = getContext().actorOf(Props.create(ProxyActor.class),ActorConstants.PATH_PROXY+counter);
. . . .
proxy.tell(new Object[]{getSender(), msg}, getSelf())
}
}
. . . .
}
对于每个新连接,将创建一个ProxyActor实例,ProxyActor将创建一个ProxyListGenerator实例,并注册ProxyListGenerator以侦听来自 新连接的客户端。(下面是示例代码)
public class ProxyActor extends UntypedActor {
. . .
public void onReceive(Object msg) throws Exception {
if (msg instanceof Object[]) {
. . . .
ActorRef proxyListener = getContext().actorOf(Props.create(ProxyListenerActor.class, msg[1]),ActorConstants.PATH_PROXY_LISTENER+device.getCounter());
. . . .
msg[0].tell(TcpMessage.register(proxyListener), getSelf());
. . . .
}
}
. . . .
}
ProxySteGenerator是在端口上侦听来自客户端的消息的类。所有出站通信都使用ProxySsenderActor完成
多谢各位;问候
# 1 楼答案
Akka HTTP似乎依赖于类型安全SSL配置,该配置对SSL配置有详细的coverage