У меня есть клиент / серверное приложение C ++ TCP, зашифрованное с помощью TLS. На стороне сервера я использую openSSL с одноранговой проверкой. На стороне клиента я использую libcurl.
Все работает, если клиент не использует сертификат, который не проходит проверку. Вот краткое описание процесса, когда клиент использует неверный сертификат.
На стороне сервера SSL_accept
возвращает код ошибки из-за ожидаемой проверки.
На стороне клиента, после выполнения:
curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
r = curl_easy_perform(curl);
if (r != CURLE_OK) {
// ERROR
} else {
// OK
}
'r' возвращает 'CURLE_OK', и мое соединение не устанавливается, только когда клиент пытается отправить данные и происходит сбой. Мой вопрос заключается в том, почему он не перестает работать после первого curl_easy_perform, который называется CONNECT_ONLY. Нужно ли устанавливать дополнительный параметр для libcurl? Я бы предпочел продолжать использовать libcurl вместо того, чтобы писать свой собственный клиент OpenSSL.