带SSL的Akka.io.TCP

时间:2016-07-07 06:22:01

标签: scala ssl tcp akka akka-io

我正在实现协议的客户端(通过TCP),该协议使用akka.io.TCP与服务器通信。根据此服务器的配置方式,它可能支持也可能不支持SSL。

要确定它是否支持SSL,首先会向服务器发送纯文本消息(类似于“SslSupported”的行)。然后,服务器将使用单个字符消息“Y”/“N”进行响应。如果是,则应启动SSL握手,并且应加密会话的其余部分。 到目前为止,我已经实现了服务器回复“N”时的协议。

目前,我已经掌握了一些内容(请注意,这远不是完整的代码):

IO(Tcp) ! Bind(self, new InetSocketAddress(host, port))

def receive = { 
  case Connected(remote, local) =>
    sender() ! Write(stringToByteString("SslSupported"))
  case Received(data) =>
    data.headOption.map(_.toChar) match {
      case 'N' => // Continue with plain text protocol
      case 'Y' => ??? // Should start with SSL handshake here
    }
}

如何启动SSL握手并随后确保所有后续消息都已加密?

0 个答案:

没有答案