OpenSSL TLS バックエンド
OpenSSL(iohOpenSSL)は sgcWebSockets のクロスプラットフォーム TLS トランスポートです。このライブラリが対応するすべてのプラットフォームで動作し、そのほとんどで既定であり、どのバックエンドよりも広いプロトコルと暗号スイートをカバーします。TLSOptions.IOHandler を iohOpenSSL に設定して有効にし、OpenSSL ランタイムライブラリをアプリケーションとともにデプロイします。
OpenSSL(iohOpenSSL)は sgcWebSockets のクロスプラットフォーム TLS トランスポートです。このライブラリが対応するすべてのプラットフォームで動作し、そのほとんどで既定であり、どのバックエンドよりも広いプロトコルと暗号スイートをカバーします。TLSOptions.IOHandler を iohOpenSSL に設定して有効にし、OpenSSL ランタイムライブラリをアプリケーションとともにデプロイします。
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 バックエンドを検討してください。
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 は外部依存であるため、ランタイムライブラリはすべてのプラットフォームでアプリケーションとともに配布されます。
libssl-3.dll と libcrypto-3.dll を実行ファイルの隣にデプロイします(ターゲットに合わせて 32 ビットまたは 64 ビットのビルドを使用)。
対応する libssl と libcrypto の .so ファイルを同梱し、アプリケーションが実行時に到達できるパスから読み込みます。
libssl と libcrypto の .dylib ファイルをアプリバンドルとともに配布し、デバイス上で OpenSSL ランタイムを利用できるようにします。
ライブラリは自分でデプロイするものなので、セキュリティ修正がリリースされたときに更新する責任は利用者にあります。
OpenSSL(iohOpenSSL)は sgcWebSockets のすべてのエディションに同梱されています。詳細な内訳は機能マトリクスをご覧ください。