Ошибка SSL Asio "рукопожатие: нет доступных протоколов" - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь подключиться к Gmail через SSL с помощью Asio (автономная версия).

Когда я звоню handshake, я получаю эту ошибку:

handshake: no protocols available

Вот код:

asio::ssl::context sslContext(asio::ssl::context::sslv3);
sslContext.set_default_verify_paths();
asio::io_context ioc;
typedef asio::ip::tcp::socket Socket;
asio::ssl::stream<Socket> socket(ioc, sslContext)
auto endpointIt = resolver.resolve("smtp.gmail.com", to_string(465));
asio::connect(socket.lowest_layer(), endpointIt);
socket.lowest_layer().set_option(tcp::no_delay(true));
socket.set_verify_mode(asio::ssl::verify_peer);
socket.set_verify_callback(asio::ssl::rfc2818_verification(serverUrl));
try{
    socket.handshake(SslSocket::client);
}
catch(const std::exception& e){
    cout << e.what() << endl;
}

Я использую Ubuntu 18.04. В чем может быть проблема?

1 Ответ

0 голосов
/ 02 сентября 2018

удалось обойти его заменой:

sslContext.set_default_verify_paths();

по:

sslContext.add_verify_path("/etc/ssl/certs");

Это не будет портативно, но, по крайней мере, сейчас работает.

...