Как я могу переключиться на TLS после первоначального рукопожатия с BlueSocket? - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь реализовать клиент / серверный протокол MySQL в Swift, используя BlueSocket .

Насколько я понимаю, MySQL требует, чтобы начальное соединение было поверх обычного TCP, итогда соединение может быть переключено на использование TLS.Однако BlueSSLService , который включил SSL / TLS с BlueSocket, требует, чтобы сокет был настроен на использование TLS перед вызовом Socket.connect.

Для создания незашифрованного сокета, который я использую:

import Socket

let socket = try! Socket.create()
try! socket.connect(to: "127.0.0.1", port: 3306)

С этим я могу выполнить начальное рукопожатие MySQL.Однако, если я пытаюсь использовать TLS, вот так:

import Socket
import SSLService

let sslConfig = SSLService.Configuration()
let socket = try! Socket.create()
socket.delegate = try! SSLService(usingConfiguration: sslConfig)
try! socket.connect(to: "127.0.0.1", port: 3306) // ERROR: SSLHandshake

Я получаю сообщение об ошибке.

Возможно ли изначально подключиться к серверу MySQL через TLS?Если нет (как это выглядит), как я могу переключиться начать использовать TLS после первоначального рукопожатия (и SSLRequest пакет)?

...