GNU/Linux >> Linux の 問題 >  >> Linux

Linux でソケットを使用して https リクエストを行う

HTTPS は HTTP と同じですが、暗号化 SSL レイヤーにカプセル化されています。これらの HTTPS 接続を行うには、OpenSSL のようなライブラリを使用する必要があります。

OpenSSL は、socket.h のものを置き換える機能を提供し、SSL チャネルを介して通常の HTTP (または使用したい他のプロトコル) に接続、読み取り、書き込みを行い、SSL 部分の処理を透過的にします。


https リクエストは http のように見えます ただし、クライアントとサーバー間の実際の通信は透過的に暗号化され、別のデフォルト ポートを使用します。幸いなことに、透過的な暗号化を使用すると、通常の HTTP クライアントを作成するのと同じようにプログラミングできます。悪いニュースは、暗号化が非常に複雑であるため、それを実装するには専用のライブラリが必要になることです。

そのようなライブラリの 1 つが OpenSSL です。 OpenSSL を使用すると、クライアントの最小限のコードは次のようになります:

#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()

Linux
  1. Apacheでmod_clusterを使用する

  2. .htaccessを使用してhttpをhttpsにリダイレクトする方法は?

  3. 50 UNIX / Linux システム管理者チュートリアル

  1. ProcDumpを使用してLinuxをデバッグする

  2. NginXでHTTPをHTTPSにリダイレクトする

  3. cmake で CPack を使用して 2 つの異なるパッケージを生成します:Linux

  1. Linuxでのripgrep(rg)コマンドの使用

  2. あなたはそれを作ることができますか? Make コマンドを使用して Linux で C プログラムをコンパイルする

  3. http リクエストのタイミングをミリ秒単位で計るシンプルな Linux ツール