SSL / TLS バックエンド

sgcWebSockets は、単一のプロパティ TLSOptions.IOHandler の背後で切り替えられる 4 種類の TLS トランスポートを提供します。最大限の移植性を求めるなら OpenSSL を、オペレーティングシステム自身の TLS スタックを使用しデプロイする OpenSSL ライブラリが不要なネイティブのプラットフォームバックエンド(Windows SChannel、Android、iOS/macOS)を選ぶこともできます。バックエンドの切り替えは 1 行のコードだけで、ほかには何も変わりません。

4 つの TLS トランスポート、1 つのプロパティ

どのバックエンドも同じ TLSOptions API に接続します。お使いのプラットフォームとデプロイに合うものを選び、TLSOptions.IOHandler を設定してください。

バックエンド比較

各トランスポートのプラットフォーム、デプロイのフットプリント、TLS 1.3 対応、エディションを示します。

バックエンド プラットフォーム デプロイするライブラリ TLS 1.3 エディション
OpenSSL Windows、Linux、macOS、iOS、Android OpenSSL(libssl/libcrypto) 対応 すべてのエディション
SChannel Windows なし(Windows に内蔵) 対応(Windows 11/Server 2022 以降) Professional、Enterprise
Android TLS Android なし(OS を使用) 対応 Enterprise
Apple TLS iOS、macOS なし(OS を使用) 対応(10.14 以降/iOS 12 以降) Enterprise

バックエンドを選ぶ

各トランスポートには専用のページがあり、完全なセットアップ手順、Delphi と C++ Builder のコード、デプロイに関する注意点、エディションの詳細を掲載しています。

OpenSSL (iohOpenSSL)

Indy のソケット上で動作するクロスプラットフォーム TLS で、sgcWebSockets が対応するすべてのプラットフォームで利用でき、ほとんどのプラットフォームで既定です。TLS 1.0 から 1.3 まで完全対応し、最も広い暗号スイートをカバーし、カスタム CA、クライアント証明書、ALPN に対応します。OpenSSL ランタイムライブラリはアプリケーションとともにデプロイします。すべてのエディションに同梱されています。

完全なガイドを読む →

SChannel (iohSChannel)

Windows に内蔵された Microsoft のネイティブ TLS スタック(Secure Channel / SSPI)です。デプロイするライブラリがゼロで、配布やパッチ適用が必要な OpenSSL DLL もなく、Windows 証明書ストアを使用します。Windows 専用。Professional および Enterprise エディションに同梱されています。

完全なガイドを読む →

ネイティブ Android TLS (iohAndroidTLS)

JNI を介してプラットフォームの SSLEngine を使用するネイティブ Android TLS です。APK に OpenSSL の .so を含めず、Android システムトラストストアに対する検証、TLS 1.3、そして Android 10(API 29)以降での ALPN に対応します。Enterprise エディション。

完全なガイドを読む →

ネイティブ Apple TLS (iohAppleTLS)

iOS と macOS 向けのネイティブ Apple TLS で、デプロイする OpenSSL の .dylib がありません。macOS 10.14 以降/iOS 12 以降では Network.framework(TLS 1.3)を自動選択し、それより古いシステムでは Secure Transport(TLS 1.2)にフォールバックします。システムトラスト、SNI、カスタム CA、クライアント証明書/mTLS、ALPN に対応します。Enterprise エディション。

完全なガイドを読む →

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

ネイティブのプラットフォーム TLS、すなわち Android(iohAndroidTLS)と Apple(iohAppleTLS)には Enterprise エディションが必要です。OpenSSL(iohOpenSSL)はすべてのエディションに同梱されています。SChannel(iohSChannel)は Professional および Enterprise エディションに同梱されています。

1 行で切り替え

4 つのバックエンドはすべて同じ TLSOptions API を共有するため、相互の移行はプロパティを 1 つ変更するだけです。コードのほかの部分は何も変える必要がありません。

TLS & VerifyCertificate

どのバックエンドでも同じ方法で TLS を有効にし、ピア証明書の検証を切り替えられます。

RootCertFile

カスタム CA ルートを指定して、プライベートまたは自己署名の認証局を信頼します。

CertFile & Password

相互 TLS(mTLS)認証のために、クライアント証明書とそのパスワードを指定します。

ALPNProtocols

TLS ハンドシェイク中にアプリケーションプロトコル(たとえば http/1.1)をアドバタイズします。

// Same TLSOptions, only the IOHandler line changes per platform.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';
WSClient.TLSOptions.CertFile := '';
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Active := True;
// Same TLSOptions, only the IOHandler line changes per platform.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";
WSClient->TLSOptions->CertFile = "";
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Active = true;

ネイティブ TLS、デプロイする OpenSSL はゼロ

無料体験版をダウンロードして、1 行のコードで TLS バックエンドを切り替えましょう。