TsgcQUICClient › プロパティ › SSLQUICOptions
QUIC 接続の TLS 1.3 設定:証明書、ALPN およびピア検証。
property SSLQUICOptions: TsgcSSLQUICClient_Options read FSSLQUICOptions write SetSSLQUICOptions;
—
SSLQUICOptions は QUIC が必要とするセキュアレイヤーが使用する TLS 1.3 設定をグループ化します。QUIC は常に ALPN と TLS 1.3 をネゴシエートし、これらのオプションによってハンドシェイクの実行方法が制御されます。CertFile と KeyFile はクライアント証明書を提供し、RootCertFile はサーバーの検証に使用する CA を提供します。VerifyCertificate と VerifyCertificate_Options はピア検証を制御し、Version は TLS バージョンを選択し、OpenSSL_Options は OpenSSL バックエンドを調整し、ConnectTimeout はハンドシェイクの時間制限を設定します。接続を開く前にサブプロパティを調整してください。値は接続確立時に読み取られます。セキュアレイヤー自体は SSLQUIC で有効・無効を切り替え、QUICOptions には TLS 以外のトランスポート設定が含まれます。
ConnectTimeout(デフォルトは 10000 ミリ秒)は、トランスポートによって実際に適用されるようになりました。ハンドシェイクはこの期限に対して進められ、期限が切れた時点で中止されます。そのため、デフォルト値では、到達できないサーバーに対して以前のブロッキングハンドシェイクのように約 30 秒かかるのではなく、約 10 秒で失敗します。
IOHandler(デフォルト iohOpenSSL)は QUIC ハンドシェイクの TLS エンジンを選択します。iohOpenSSL は OpenSSL パスとエンジンの自動選択を維持します。iohNativeTLS は sgcCrypto パックのネイティブ TLS エンジンで TLS 1.3 ハンドシェイクを実行し、常に sgc QUIC エンジン(qmCustom)を使用します。セッションチケット、再開、0-RTT は OpenSSL と同様に機能します。QUIC パケット保護もネイティブであるため、OpenSSL は一切読み込まれません。
ホストの同一性チェックのために設定する項目はありません。VerifyCertificate が True の場合、クライアントは接続先を検証処理へ自動的に渡します。Host に DNS 名が設定されていればホスト名として、IP リテラルが設定されていればアドレスとして渡されます。DNS 名は証明書内のホスト名と、IP リテラルは IP エントリと照合されるため、チェーンは有効でも別の名前に対して発行された証明書は拒否されます。OpenSSL_Options.X509Checks はこのチェックを有効にするためのものではなく、その対象を上書きしたり独自のチェックを追加したりするためのものです。
oClient := TsgcQUICClient.Create(nil);
oClient.Host := 'www.example.com';
oClient.Port := 443;
oClient.SSLQUIC := True;
oClient.SSLQUICOptions.VerifyCertificate := True;
oClient.SSLQUICOptions.RootCertFile := 'ca.pem';