Я пытаюсь настроить NWConnection, который выполняет сертификаты на стороне клиента:
self.connection = NWConnection(
host: NWEndpoint.Host("servername"),
port: NWEndpoint.Port(integerLiteral: 8899),
using: .tls)
Но я думаю, что простая переменная класса .tls
должна быть гораздо более сложным объектом NWParameters
, но я в полной растерянности (документация довольно скудна) относительно того, что я создаю там, чтобы прикрепить клиентские сертификаты к параметрам. Я также не знаю, как я могу даже перейти от файла .crt/.pem к чему-то, что приложение управляет программно.
Каков пример того, как можно настроить NWParameters
для поддержки клиентских сертификатов?
Контекст
Я пытаюсь настроить клиентское соединение для связи с брокером 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 на стороне сервера и даже если он самоподписанный.