ネイティブ Apple TLS バックエンド

ネイティブ Apple TLS(iohAppleTLS)は sgcWebSockets の iOS および macOS 向け TLS トランスポートで、デプロイする OpenSSL の .dylib がありません。デバイスに最適なシステム API を自動選択するため、コードを変更することなくモダンなシステムで TLS 1.3 が得られます。TLSOptions.IOHandler を iohAppleTLS に設定して有効にします。

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

ネイティブ Apple TLS (iohAppleTLS)

iOS と macOS 向けのネイティブ Apple TLS で、デプロイする OpenSSL の .dylib がありません。

ネイティブ Apple TLS は、iOS および macOS アプリがオペレーティングシステム自身の TLS を使えるようにするため、同梱・バージョン整合・パッチ適用が必要な OpenSSL の .dylib がありません。TLS スタックは Apple が保守するため、アプリはプラットフォームのセキュリティポリシーに沿った状態に保たれ、リリースからサードパーティ依存が取り除かれます。

このバックエンドは、単一の iohAppleTLS 設定の背後で、各デバイスに最適なシステム API を自動選択します。macOS 10.14 以降および iOS 12 以降では Network.framework を使用し、TLS 1.3 をもたらします。それより古いシステムでは Secure Transport にフォールバックし、上限は TLS 1.2 になります。OS バージョンで分岐する必要はありません。バックエンドが正しいパスを選び、コードはそのままです。

これは機能を削った簡易版ではなく、完全な TLS クライアントです。システムトラストストアを使用し、SNI とホスト名の検証を行い、カスタム検証のための OnAppleTLSVerifyPeer コールバックを公開します。カスタム CA ルート(RootCertFile)でプライベートな認証局を信頼し、相互 TLS のためにクライアント証明書(CertFile + Password)を提示し、ALPN を通じて http/1.1 などのアプリケーションプロトコルをアドバタイズできます。OS が保守する TLS 1.3 を求め、管理するサードパーティの暗号を持ちたくない App Store アプリにはこのバックエンドを選んでください。

ネイティブ Apple TLS を有効にする

TLSOptions.IOHandler を iohAppleTLS に設定し、あとはほかのバックエンドと同じ TLSOptions を使用します。

WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohAppleTLS;
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.TLSOptions.RootCertFile := '';   // optional custom CA (PEM/DER)
WSClient.TLSOptions.CertFile := '';       // optional client cert (PKCS#12) for mTLS
WSClient.TLSOptions.Password := '';       // client cert password
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.OnAppleTLSVerifyPeer := DoVerifyPeer;  // optional custom validation
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohAppleTLS;
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->TLSOptions->RootCertFile = "";   // optional custom CA (PEM/DER)
WSClient->TLSOptions->CertFile = "";       // optional client cert (PKCS#12) for mTLS
WSClient->TLSOptions->Password = "";       // client cert password
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->OnAppleTLSVerifyPeer = DoVerifyPeer;  // optional custom validation
WSClient->Host = "your.server.com";
WSClient->Port = 443;
WSClient->Active = true;

OpenSSL の .dylib なし

TLS スタックはオペレーティングシステムとともに出荷され、バックエンドはデバイスごとに適切な API を選びます。

Network.framework

macOS 10.14 以降および iOS 12 以降では、バックエンドは Network.framework を使用し、TLS 1.3 をもたらします。

Secure Transport フォールバック

それより古いシステムでは、同じ設定の背後で自動的に Secure Transport(TLS 1.2)にフォールバックします。

システムトラスト & SNI

システムトラストストアを SNI とホスト名検証付きで使用し、カスタムチェック用の OnAppleTLSVerifyPeer も備えます。

カスタム CA & mTLS

RootCertFile でプライベート CA を信頼し、CertFile + Password でクライアント証明書を提示し、ALPN プロトコルをアドバタイズします。

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

ネイティブ Apple TLS(iohAppleTLS)には sgcWebSockets の Enterprise エディションが必要です。詳細な内訳は機能マトリクスをご覧ください。

ネイティブ Apple TLS 1.3、OpenSSL はゼロ

無料体験版をダウンロードして、デプロイする OpenSSL の .dylib がない iOS および macOS アプリを出荷しましょう。