Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One-way certification issue #553

Open
wtdu opened this issue Sep 12, 2023 · 4 comments
Open

One-way certification issue #553

wtdu opened this issue Sep 12, 2023 · 4 comments
Labels

Comments

@wtdu
Copy link

wtdu commented Sep 12, 2023

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

@MelnykovDenys
Copy link

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

@wtdu
Copy link
Author

wtdu commented Sep 14, 2023

@MelnykovDenys
thanks,you are right !I printed the mqtt5. sslSettings parameter, gave me nil value .
Now, do you have any new breakthroughs?

@MelnykovDenys
Copy link

@wtdu
Unfortunately no, I’m observing this thread also #546 . If I find solution, I’ll write you

@JaylinYu
Copy link
Member

JaylinYu commented Nov 1, 2023

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.

@JaylinYu JaylinYu closed this as completed Nov 1, 2023
@JaylinYu JaylinYu reopened this Nov 1, 2023
@JaylinYu JaylinYu added the low label Nov 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants