TsgcWebSocketClientProperties › TLSOptions

TLSOptions プロパティ

TLS が有効な場合に使用される証明書、TLS バージョン、ALPN、IOHandler、その他のセキュア接続の詳細を設定します。

構文

property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;

デフォルト値

Preset=tlspCustom

解説

TLSTrueの場合にのみアクセス可能です。サブプロパティにはRootCertFileCertFileKeyFilePasswordVerifyCertificateVerifyDepthVersion(tlsUndefinedからtls1_3まで)、ALPNProtocolsおよびIOHandler(iohOpenSSLiohSChanneliohAndroidTLSまたはiohAppleTLS)が含まれます。AndroidではiohAndroidTLSがプラットフォームネイティブのTLS(javax.net.ssl.SSLEngine)を使用し、iOSおよびmacOSではiohAppleTLSがAppleネイティブのTLSを使用するため、OpenSSLライブラリをデプロイする必要はありません。OpenSSL固有の設定はOpenSSL_Optionsの下に、SChannel固有の設定はSChannel_Optionsの下にあります。

VerifyCertificateは、iohSChannelを含むすべてのIOHandlerに対して同じ方法で証明書の検証を制御します。デフォルトはFalseであるため、自己署名、期限切れ、またはホスト名が一致しない証明書を提示するサーバーは、Trueに設定されるまで警告なしに受け入れられます。SChannelの場合、検証はWindows証明書ストアに対して行われます。OnSChannelVerifyPeerを使用すると、アプリケーションはチェーンを検査したり、本来は拒否される証明書を受け入れたりできます。

VerifyCertificateは、証明書が発行後に失効させられたかどうかについては何も示しません。そのため、証明書が失効しているものの、まだ有効期限が切れていない盗まれた鍵でも認証に成功します。iohSChannelの場合、失効状態が確認されるのはSChannel_Options.Revocation.CheckscrcDisabled(デフォルト)以外に設定されている場合のみです。scrcEndCertificateはサーバー証明書のみをチェックし、scrcChainExcludeRootは中間証明書も併せてチェックし、scrcChainはルート証明書も含めます。Revocation.TimeoutはCRLおよびOCSPの取得全体を制限し(デフォルトは5000ミリ秒)、到達できないレスポンダーがハンドシェイクを停滞させないようにします。Revocation.CacheOnlyはWindowsが既にキャッシュしている情報のみを使用し、ネットワークにアクセスしません。Revocation.IgnoreRevocationOfflineRevocation.IgnoreNoRevocationCheck(いずれもTrue)は、到達できないレスポンダーや失効情報を公開していない証明書を受け入れるかどうかを決定します。失効が確認された証明書は常に拒否されます。SChannel Certificate Revocationを参照してください。

Preset は、一度の代入で一連の安全なデフォルト値を適用します。tlspCustom(デフォルト)では、各オプションは手動で設定した値を保持し、以前の動作が維持されます。Preset := tlspSecureDefaults を設定すると、証明書の検証(VerifyCertificate := True)が有効になり、Version が少なくとも TLS 1.2 に引き上げられ(より低いバージョンまたは未定義のバージョンが設定されていた場合)、サーバー証明書のホスト名チェック(OpenSSL の X509Checks ホスト名検証)が有効になり、SChannel の失効チェックが scrcChainExcludeRoot として有効になります。プリセットを適用した後でも、個々のオプションを調整できます。

使用例


oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.TLSOptions.Version := tls1_2;
oClient.TLSOptions.VerifyCertificate := true;
oClient.TLSOptions.RootCertFile := 'cacert.pem';
oClient.Active := true;

プロパティに戻る