OpenSSL TLS バックエンド

OpenSSL(iohOpenSSL)は sgcWebSockets のクロスプラットフォーム TLS トランスポートです。このライブラリが対応するすべてのプラットフォームで動作し、そのほとんどで既定であり、どのバックエンドよりも広いプロトコルと暗号スイートをカバーします。TLSOptions.IOHandler を iohOpenSSL に設定して有効にし、OpenSSL ランタイムライブラリをアプリケーションとともにデプロイします。

← すべての TLS バックエンド

OpenSSL (iohOpenSSL)

Indy のソケット上に実装されたクロスプラットフォーム TLS で、sgcWebSockets が対応するすべてのプラットフォームで利用できます。

OpenSSL は、sgcWebSockets が Indy のソケット上に重ねて実装するクロスプラットフォーム TLS です。Windows、Linux、macOS、iOS、Android で利用でき、そのほとんどで既定のバックエンドです。すべてのプラットフォームで同一の TLS 動作が必要な場合や、OpenSSL だけが公開する機能に依存する場合は OpenSSL を選んでください。

このバックエンドは TLS 1.0 から TLS 1.3 までをカバーし、sgcWebSockets のどのトランスポートよりも広い暗号スイートを選択できます。カスタム CA ルート(RootCertFile)でプライベートまたは自己署名の認証局を信頼し、相互 TLS のためにクライアント証明書を提示し、ALPN を通じて http/1.1 などのアプリケーションプロトコルをアドバタイズできます。4 つのバックエンドはすべて同じ TLSOptions API を共有するため、OpenSSL 向けに書かれたコードは IOHandler の行を変更するだけでネイティブバックエンドへ移行できます。

トレードオフはデプロイです。OpenSSL は外部依存であるため、そのランタイムライブラリをアプリケーションとともに配布し、パッチを当て続ける必要があります。Windows では libssl-3.dll と libcrypto-3.dll、Linux と Android では対応する .so ファイル、Apple プラットフォームでは .dylib ファイルになります。デプロイするライブラリがゼロのネイティブ TLS を求める場合は、Windows の SChannel、またはネイティブ Android/Apple バックエンドを検討してください。

OpenSSL を有効にする

TLSOptions.IOHandler を iohOpenSSL に設定し、ビルドとともに OpenSSL ライブラリをデプロイします。

uses
  sgcWebSocket, sgcWebSocket_Types;
// ...
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';   // optional custom CA (PEM/DER)
WSClient.TLSOptions.CertFile := '';       // optional client cert for mTLS
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";   // optional custom CA (PEM/DER)
WSClient->TLSOptions->CertFile = "";       // optional client cert for mTLS
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Host = "your.server.com";
WSClient->Port = 443;
WSClient->Active = true;

OpenSSL ライブラリの配布

OpenSSL は外部依存であるため、ランタイムライブラリはすべてのプラットフォームでアプリケーションとともに配布されます。

Windows

libssl-3.dll と libcrypto-3.dll を実行ファイルの隣にデプロイします(ターゲットに合わせて 32 ビットまたは 64 ビットのビルドを使用)。

Linux & Android

対応する libssl と libcrypto の .so ファイルを同梱し、アプリケーションが実行時に到達できるパスから読み込みます。

macOS、iOS

libssl と libcrypto の .dylib ファイルをアプリバンドルとともに配布し、デバイス上で OpenSSL ランタイムを利用できるようにします。

パッチを当て続ける

ライブラリは自分でデプロイするものなので、セキュリティ修正がリリースされたときに更新する責任は利用者にあります。

エディションに関する注記

OpenSSL(iohOpenSSL)は sgcWebSockets のすべてのエディションに同梱されています。詳細な内訳は機能マトリクスをご覧ください。

1 行でクロスプラットフォーム TLS

無料体験版をダウンロードして、Delphi と C++Builder のアプリに OpenSSL バックエンドの TLS を追加しましょう。