TLS-клиент, использующий libcurl, не завершается ошибкой при сбое проверки клиента на стороне сервера - PullRequest
1 голос
/ 10 марта 2020

У меня есть клиент / серверное приложение 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.

...