TsgcWebSocketClient属性 › TLSOptions

TLSOptions 属性

配置 TLS 启用时使用的证书、TLS 版本、ALPN、IOHandler 及其他安全连接详情。

语法

property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;

默认值

Preset=tlspCustom

备注

仅当 TLSTrue 时可访问。子属性包括 RootCertFileCertFileKeyFilePasswordVerifyCertificateVerifyDepthVersion(从 tlsUndefinedtls1_3)、ALPNProtocolsIOHandleriohOpenSSLiohSChanneliohAndroidTLSiohAppleTLS)。在 Android 上,iohAndroidTLS 使用平台原生 TLS(javax.net.ssl.SSLEngine),在 iOS 和 macOS 上,iohAppleTLS 使用 Apple 原生 TLS,因此无需部署 OpenSSL 库;原生平台 TLS 需要 Enterprise 版本。OpenSSL 特定的设置位于 OpenSSL_Options 下,SChannel 特定的设置位于 SChannel_Options 下。

VerifyCertificate 对每种 IOHandler(包括 iohSChannel)的证书验证方式相同:其默认值为 False,因此在设置为 True 之前,服务器提供的自签名、已过期或主机名不匹配的证书都会被接受而不会发出任何警告。使用 SChannel 时,验证将针对 Windows 证书存储进行;OnSChannelVerifyPeer 允许应用程序检查证书链,或接受原本会被拒绝的证书。

VerifyCertificate 完全无法说明证书自颁发以来是否已被吊销,因此私钥被窃取后,其证书虽已被吊销但尚未过期,仍然能够通过身份验证。使用 iohSChannel 时,只有将 SChannel_Options.Revocation.Check 设置为 scrcDisabled(默认值)以外的值,才会检查吊销状态: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;

返回属性