HTTPS ist genau wie HTTP, aber es ist in einer kryptografischen SSL-Schicht eingekapselt. Sie müssen eine Bibliothek wie OpenSSL verwenden, um diese HTTPS-Verbindungen herzustellen.
OpenSSL wird Funktionen bereitstellen, die die socket.h ersetzen, um normales HTTP (oder ein anderes Protokoll, das Sie verwenden möchten) über einen SSL-Kanal zu verbinden, zu lesen und zu schreiben, wodurch die Handhabung des SSL-Teils für Sie transparent wird.
https
Anfragen sehen genauso aus wie http
Anfragen, aber mit transparenter Verschlüsselung der eigentlichen Kommunikation zwischen Client und Server und auf einem anderen Standardport. Die gute Nachricht ist, dass Sie mit transparenter Verschlüsselung so programmieren können, als würden Sie einen normalen HTTP-Client schreiben. Die schlechte Nachricht ist, dass die Verschlüsselung so komplex ist, dass Sie eine spezialisierte Bibliothek benötigen, um sie für Sie zu implementieren.
Eine solche Bibliothek ist OpenSSL. Unter Verwendung von OpenSSL würde der minimale Code für einen Client wie folgt aussehen:
#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()