@willa_will
Для установки соединения с сайтом по https из программы на C++ можно использовать библиотеку OpenSSL.
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#include #include #include void ssl_connect(const char *hostname, const int port) { SSL_library_init(); SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_client_method()); BIO *bio = BIO_new_ssl_connect(ssl_ctx); BIO_get_ssl(bio, NULL); BIO_set_conn_hostname(bio, hostname); BIO_set_conn_port(bio, std::to_string(port).c_str()); if (BIO_do_connect(bio) <= 0) { ERR_print_errors_fp(stderr); exit(EXIT_FAILURE); } else { printf("Connected to %s:%d ", hostname, port); } SSL *ssl; SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_NONE, NULL); SSL_CTX_set_verify_depth(ssl_ctx, 1); SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); ssl = SSL_new(ssl_ctx); SSL_set_bio(ssl, bio, bio); if (SSL_connect(ssl) < 0) { ERR_print_errors_fp(stderr); exit(EXIT_FAILURE); } else { printf("SSL connection established "); } SSL_CTX_free(ssl_ctx); SSL_shutdown(ssl); SSL_free(ssl); } |
В данном примере используется функция ssl_connect
, которая принимает на вход строку с именем хоста и число, обозначающее порт. Внутри функции происходит инициализация библиотеки OpenSSL, создание контекста SSL, установка соединения с сайтом и установка SSL соединения. Затем происходит разрыв соединения.