Пользовательская проверка сертификата SSL с помощью libcurl - PullRequest
0 голосов
/ 10 июля 2020

Мне нужен libcurl для приема самоподписанных сертификатов, но я не хочу, чтобы они принимались вслепую. Мне нужно убедиться, что сертификаты являются ожидаемыми самозаверяющими сертификатами, прежде чем разрешить соединение.

In. NET это делается путем установки RemoteCertificateValidationCallback с помощью SslStream или HttpWebRequest. Обратный вызов предоставляет сертификаты, и можно выполнить проверку, чтобы убедиться, что данные ожидаются. Если вам интересно, у меня есть безопасный метод распространения сведений о сертификате агентам, которым они нужны.

С libcurl ближайшим к обратному вызову SSL является CURLOPT_SSL_CTX_FUNCTION, однако в документации указано:

Эта функция обратного вызова вызывается libcurl непосредственно перед инициализацией SSL-соединения после обработки всех других параметров, связанных с SSL, чтобы дать приложению последний шанс изменить поведение инициализации SSL.

Это означает, что обратный вызов вызывается до того, как будет установлено фактическое SSL-соединение, что означает, что сертификаты еще не получены для проверки. Если я не понимаю, что я могу сделать в этом обратном вызове, есть ли способ выполнить мою собственную проверку SSL с помощью libcurl?

...