HTTPS es como HTTP, pero está encapsulado en una capa SSL criptográfica. Deberá usar una biblioteca como OpenSSL para realizar esas conexiones HTTPS.
OpenSSL proporcionará funciones que reemplazan a las de socket.h, para conectarse, leer y escribir HTTP normal (o cualquier otro protocolo que desee usar) a través de un canal SSL, haciendo que el manejo de la parte SSL sea transparente para usted.
https
las solicitudes se parecen a http
solicitudes, pero con cifrado transparente de la comunicación real entre el cliente y el servidor, y en un puerto predeterminado diferente. La buena noticia es que el cifrado transparente le permite programar como si estuviera escribiendo un cliente HTTP normal. La mala noticia es que el cifrado es tan complejo que necesita una biblioteca especializada para implementarlo.
Una de esas bibliotecas es OpenSSL. Usando OpenSSL, el código mínimo para un cliente se vería así:
#include <openssl/ssl.h>
// first connect to the remote as usual, but use the port 443 instead of 80
// initialize OpenSSL - do this once and stash ssl_ctx in a global var
SSL_load_error_strings ();
SSL_library_init ();
SSL_CTX *ssl_ctx = SSL_CTX_new (SSLv23_client_method ());
// create an SSL connection and attach it to the socket
SSL *conn = SSL_new(ssl_ctx);
SSL_set_fd(conn, sock);
// perform the SSL/TLS handshake with the server - when on the
// server side, this would use SSL_accept()
int err = SSL_connect(conn);
if (err != 1)
abort(); // handle error
// now proceed with HTTP traffic, using SSL_read instead of recv() and
// SSL_write instead of send(), and SSL_shutdown/SSL_free before close()