Akka 2.3.14& Java 7 - 如何配置TLS

时间:2016-07-20 16:57:32

标签: java akka tls1.2

我是Akka的新手,我实现了一个侦听设备流量的TCP服务器。我在网上搜索过,找不到任何有关如何使用Akka IO配置TLS的参考或具体示例。

我的用例是我应该能够配置多个端口,并可能指向不同的密钥库

我不确定我是否错过了显而易见的事。

我想我没有清楚地解释自己,所以这里有详细信息

为了向您介绍我正在处理的工作以及我遇到的问题,

我也使用Akka IO开发了我的POC,使用的是Akka v2.3.14和Java 7.

我想要实现的是    - 我应该能够配置有或没有TLS的新服务器端口    - 每个TLS端口都应该能够指向证书的唯一密钥库文件

演员创建路径

以下是创建的一些重要演员的路径

TCPProxyService类创建ActorSystem并加载端口配置,然后创建ProxyServiceActor。 ProxyServiceActor绑定到端口(下面的代码)。当ProxyServiceActor收到连接时,它会创建ProxyActor和 ProxyActor实习生创建ProxyListenerActor和ProxySenderActor并使用tcpManager注册ProxyListenerActor(tcpManager = Tcp.get(getSystem()。manger())

  

TCPProxyService ----> ProxyServiceActor(绑定到给定的服务器端口)----> ProxyActor ---->   ProxyListenerActor(已注册的TCP侦听器,侦听客户端端口)----> ProxySenderActor

示例代码

下面定义的类(ProxyServiceActor)是绑定到它从使用spring beans.xml配置的ProxyConfig实例接收的端口的类

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会创建一个ProxyListenerActor实例并注册ProxyListenerActor以侦听来自 新连接的客户。 (以下示例代码)

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());

        . . . .
    }
}
. . . .

}

ProxyListenerActor是在端口上侦听来自客户端的消息的类。所有出站通信都使用ProxySenderActor

完成

谢谢&此致

1 个答案:

答案 0 :(得分:0)

Akka HTTP似乎依赖于Typesafe SSL-Config,它在ssl配置上有详细coverage