HTTPS je stejné jako HTTP, ale je zapouzdřeno v kryptografické vrstvě SSL. K vytvoření těchto připojení HTTPS budete muset použít knihovnu jako OpenSSL.
OpenSSL bude poskytovat funkce, které nahrazují ty socket.h, pro připojení, čtení a zápis běžného HTTP (nebo jakéhokoli jiného protokolu, který chcete použít) prostřednictvím kanálu SSL, takže pro vás bude manipulace s částí SSL transparentní.
https
požadavky vypadají stejně jako http
požadavky, ale s transparentním šifrováním skutečné komunikace mezi klientem a serverem a na jiném výchozím portu. Dobrou zprávou je, že transparentní šifrování vám umožňuje programovat stejně jako při psaní běžného HTTP klienta. Špatnou zprávou je, že šifrování je natolik složité, že k jeho implementaci potřebujete specializovanou knihovnu.
Jednou z takových knihoven je OpenSSL. Při použití OpenSSL by minimální kód pro klienta vypadal takto:
#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()