我正在尝试使用BlueSocket在Swift中实现MySQL客户端/服务器协议。
据我了解,MySQL要求初始连接必须通过纯TCP,然后可以将连接切换为使用TLS。但是,BlueSSLService(通过BlueSocket启用了SSL / TLS)要求在调用Socket.connect
之前将套接字配置为使用TLS。
要创建一个未加密的套接字,我正在使用:
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
我得到一个错误。
是否可以通过TLS最初连接到MySQL服务器?如果没有(显示),如何在初始握手(和SSLRequest数据包)之后切换使用TLS?