Сертификат TLS CA Прикрепление SSL с использованием SWIFT-NIO-SSL

Я пытаюсь использовать SWIFT-NIO-SSL для подключения к серверу с помощью сертификата CA и сертификата сервера.

После многочисленных попыток и опробования различных подходов я не смог найти решения. Есть ли какой-либо учебник или помощь в подключении к TLS с использованием сертификата CA с swift-nio-ssl.

1 ответ

Решение

Я не уверен на 100%, что вы спрашиваете, но если вы пытаетесь подключиться к серверу с помощью настраиваемого центра сертификации, вам, вероятно, понадобится следующее TLSConfiguraion:

var tlsConfiguration = TLSConfiguration.forClient()
tlsConfiguration.trustRoots = .file("/tmp/the-ca.pem") // the CA

Если вы хотите проверить цепочку сертификатов, предоставляемую сервером, вы должны использовать NIOSSLClientHandler(context:serverHostname:customVerificationCallback:) при создании NIOSSLClientHandlerкоторые вы добавляете в свой конвейер. Последний аргумент - это NIOSSLCustomVerificationCallbackack который позволяет полностью переопределить логику проверки сертификата BoringSSL, он получает всю цепочку сертификатов, предоставленную удаленным узлом.

(На всякий случай, если вы не используете NIO напрямую, а через другую библиотеку, такую ​​как Vapor или AsyncHTTPClient, приведенное выше не обязательно имеет смысл, потому что вы не добавляете NIOSSLClientHandler сами.)

На этом этапе просто используя TLSConfigurationне позволяет реализовать закрепление сертификатов. Теоретически вы могли бы реализовать это, используяNIOSSLCustomVerificationCallbackack но на практике это может быть сложно в зависимости от того, как именно вы планируете закреплять.

Если вы предоставите более подробную информацию о том, чего именно вы хотите достичь, я буду рад немного остановиться на этом.

Другие вопросы по тегам