CocoaMQTT
CocoaMQTT copied to clipboard
One-way certification issue
I want to connect mqtt by pem file ,but I can not connect broker.
👇🏻👇🏻 There are my some sample codes:
let cliendId = "xxxxxxxxxxxxxxxx" mqtt5 = CocoaMQTT5(clientID: cliendId, host: defaultHost, port: UInt16(port)) mqtt5?.logLevel = .debug mqtt5?.username = userName mqtt5?.password = password mqtt5?.keepAlive = 60 mqtt5?.delegate = self mqtt5?.autoReconnect = true mqtt5?.cleanSession = true mqtt5?.delegateQueue = .global(qos:.utility) mqtt5?.backgroundOnSocket = true mqtt5?.allowUntrustCACertificate = true mqtt5?.enableSSL = true guard let cert_Url = Bundle.main.url(forResource: "bundle", withExtension: "pem") else { return } guard let cert_data = try? Data(contentsOf: cert_Url) as? CFData else { return } let cert = SecCertificateCreateWithData(kCFAllocatorDefault, cert_data) var sslSettings: [String: NSObject] = [:] sslSettings[kCFStreamSSLCertificates as String] = [cert] as NSObject mqtt5?.sslSettings = sslSettings mqtt5?.connect()
This is error: Error Domain=MGCDAsyncSocketErrorDomain Code=8 "Error in SSLSetCertificate" UserInfo={NSLocalizedDescription=Error in SSLSetCertificate
I want to connection mqtt by pem file ,but I can not connect broker.
👇🏻👇🏻 There are my some sample code:
let cliendId = "xxxxxxxxxxxxxxxx" mqtt5 = CocoaMQTT5(clientID: cliendId, host: defaultHost, port: UInt16(port)) mqtt5?.logLevel = .debug mqtt5?.username = userName mqtt5?.password = password mqtt5?.keepAlive = 60 mqtt5?.delegate = self mqtt5?.autoReconnect = true mqtt5?.cleanSession = true mqtt5?.delegateQueue = .global(qos:.utility) mqtt5?.backgroundOnSocket = true mqtt5?.allowUntrustCACertificate = true mqtt5?.enableSSL = true guard let cert_Url = Bundle.main.url(forResource: "bundle", withExtension: "pem") else { return } guard let cert_data = try? Data(contentsOf: cert_Url) as? CFData else { return } let cert = SecCertificateCreateWithData(kCFAllocatorDefault, cert_data) var sslSettings: [String: NSObject] = [:] sslSettings[kCFStreamSSLCertificates as String] = [cert] as NSObject mqtt5?.sslSettings = sslSettings mqtt5?.connect()
This is error: Error Domain=MGCDAsyncSocketErrorDomain Code=8 "Error in SSLSetCertificate" UserInfo={NSLocalizedDescription=Error in SSLSetCertificate
Hey @wtdu ! I think It's because your cert == nil. I faced the same issue
@MelnykovDenys
thanks,you are right !I printed the mqtt5. sslSettings parameter, gave me nil value .
Now, do you have any new breakthroughs?
@wtdu Unfortunately no, I’m observing this thread also #546 . If I find solution, I’ll write you
This is an MQTT SDK, and TLS/SSL belongs to TCP transport. CocoaMQTT just a user of TLS lib. Feel free to learn how to convert your certificates.