Я пытаюсь настроить NWConnection , который выполняет клиентские сертификаты:
self.connection = NWConnection(
host: NWEndpoint.Host("servername"),
port: NWEndpoint.Port(integerLiteral: 8899),
using: .tls)
Но я думаю, что простой .tls
класс var должен быть гораздо более сложнымNWParameters
объект, но я в полной растерянности (документация довольно скудная) относительно того, что я создаю там, чтобы прикрепить клиентские сертификаты к параметрам.Также я не знаю, как мне даже перейти от файла .crt / .pem к тому, чем приложение управляет программно.
Что является примером того, как можно настроить NWParameters
для поддержки клиентских сертификатов?
Context
Я пытаюсь настроить клиентское соединение для связи с брокером MQTT , используя сертификаты на стороне клиента.Я смог проверить все это на стороне Linux с помощью командной строки.MQTT-брокер настроен так, чтобы требовать сертификат клиента, и команда типа:
mosquitto_pub -h servername -p 8899 -t 1234/2/Q/8 -m myMessage --cafile myChain.crt --cert client.crt --key client.pem
прекрасно справляется со своей задачей.Но OpenSSL для iOS достаточно черного ящика, чтобы я не знал, куда идти дальше.Я смог заставить работать все остальные коммуникации MQTT с моими NWConnection
экземплярами, включая TLS на стороне сервера и даже если он самоподписан.