ネイティブ Android TLS バックエンド
ネイティブ Android TLS(iohAndroidTLS)は sgcWebSockets の Android ネイティブ TLS トランスポートです。JNI を介してプラットフォーム自身の javax.net.ssl.SSLEngine を駆動するため、APK に OpenSSL の .so ファイルが含まれません。TLSOptions.IOHandler を iohAndroidTLS に設定して有効にします。
ネイティブ Android TLS(iohAndroidTLS)は sgcWebSockets の Android ネイティブ TLS トランスポートです。JNI を介してプラットフォーム自身の javax.net.ssl.SSLEngine を駆動するため、APK に OpenSSL の .so ファイルが含まれません。TLSOptions.IOHandler を iohAndroidTLS に設定して有効にします。
JNI を介してプラットフォームの SSLEngine を使用するネイティブ Android TLS。APK に OpenSSL の .so がありません。
ネイティブ Android TLS は暗号化を Android 自身に委ねます。sgcWebSockets は JNI を介してプラットフォームの javax.net.ssl.SSLEngine を呼び出すため、ハンドシェイク、レコードの暗号化、証明書の処理はオペレーティングシステムが実行します。すぐに得られる利点は、APK が OpenSSL の .so ファイルを一切持たないことです。パッケージが小さくなり、TLS スタックは OS によって保守・更新されるため、サードパーティの暗号ライブラリにパッチを当てたりバージョンを合わせたりする必要がありません。
このバックエンドは Android システムトラストストアに対してサーバーを検証し、ホスト名の検証を行うため、よく知られた認証局への接続は追加の設定なしで機能します。TLS 1.3 をネゴシエートし、Android 10(API 29)以降で ALPN に対応するので、ハンドシェイク中に http/1.1 などのアプリケーションプロトコルをアドバタイズできます。
OpenSSL の配布やパッチ適用を避けたい Android アプリ、あるいはプラットフォームの TLS ポリシーに完全に委ねたい場合はこのバックエンドを選んでください。sgcWebSockets のすべてのバックエンドと同様に、同じ TLSOptions API の背後にあるため、ネットワークコードのほかの部分は OpenSSL、SChannel、Apple のパスと同一で、プラットフォームごとに変わるのは IOHandler の行だけです。
Android ビルドで TLSOptions.IOHandler を iohAndroidTLS に設定します。OpenSSL の .so は不要です。
uses
sgcWebSocket, sgcWebSocket_Types;
// ...
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohAndroidTLS;
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1'); // Android 10 (API 29)+
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohAndroidTLS;
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1"); // Android 10 (API 29)+
WSClient->Host = "your.server.com";
WSClient->Port = 443;
WSClient->Active = true;
TLS スタックはすでにデバイス上に存在するため、パッケージは軽量なまま保たれ、更新は OS が担います。
APK は libssl も libcrypto も含めずに出荷されるため、パッケージが小さくなり、保守すべきネイティブ暗号もありません。
検証は Android システムトラストストアに対してホスト名検証付きで実行され、パブリック CA に追加のセットアップは不要です。
プラットフォームが TLS 1.3 をネゴシエートし、プロトコル選択のための ALPN は Android 10(API 29)以降で利用できます。
Android が TLS 実装を所有するため、セキュリティ修正は利用者のリリースサイクルではなくシステム更新を通じて届きます。
ネイティブ Android TLS(iohAndroidTLS)には sgcWebSockets の Enterprise エディションが必要です。詳細な内訳は機能マトリクスをご覧ください。