TsgcHTTP3Client › 属性 › TLSOptions
配置 QUIC 连接使用的 TLS 1.3 参数。
property TLSOptions: TsgcHTTP3SSLOptions;
实例随组件自动创建。
QUIC 将 TLS 1.3 内置于传输层,因此 HTTP/3 连接始终加密,TLSOptions 无法禁用。使用它可配置安全连接:用于双向 TLS 的客户端证书和私钥、用于验证服务器的受信任根证书、对等方验证模式以及 ALPN 协议标识符(h3)。Host 中设置的主机名在 TLS SNI 扩展中发送,并与服务器证书进行匹配。
启用 VerifyCertificate(默认为 True)时,验证结果会被强制执行,未能通过验证的证书链会中止连接。验证同时会将证书与所连接的主机绑定:DNS 名称与证书中的主机名匹配,IP 字面量地址与证书中的 IP 条目匹配,因此证书链有效但签发给其他名称的证书会被拒绝。该绑定由连接目标自动确定,无需额外配置。RootCertFile 为空时使用操作系统的默认信任存储。
IOHandler(TwsTLSIOHandler,默认 iohOpenSSL):QUIC 握手所使用的 TLS 引擎。iohOpenSSL 保留 OpenSSL 路径和自动引擎选择。iohNativeTLS 让 TLS 1.3 握手运行在 sgcCrypto 包的原生 TLS 引擎上,并始终使用 sgc QUIC 引擎,服务器证书依据 RootCertFile 或系统根证书验证,包括主机名。会话票据、会话恢复和 0-RTT 的工作方式与 OpenSSL 相同。QUIC 报文保护同样是原生的,因此完全不加载 OpenSSL。参阅不使用 OpenSSL 运行。
如果您正在升级,请注意早期版本会计算验证结果但随后将其丢弃,因此即使启用了 VerifyCertificate,客户端也会接受任何证书,包括由不受信任的颁发机构签名的证书以及签发给其他主机的证书。现在该检查会真正生效。以前能够成功连接的部署可能开始失败,因为过去被静默接受的证书现在会被验证。请将签发机构安装到信任存储中,或让 RootCertFile 指向包含该机构的证书包。
oClient := TsgcHTTP3Client.Create(nil);
oClient.TLSOptions.VerifyCertificate := True;
oClient.TLSOptions.RootCertFile := 'ca.pem';