2

我正在实现一个协议的客户端(通过 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 握手并随后确保所有后续消息都已加密?

4

0 回答 0