有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    Akka HTTP似乎依赖于类型安全SSL配置,该配置对SSL配置有详细的coverage