TsgcWebSocketServer › Propiedades › SSLOptions
Contiene rutas de certificados, selección de versión TLS y configuración de OpenSSL para el listener TLS.
property SSLOptions: TsgcWSSSL_Options read FSSLOptions write SetSSLOptions;
Version=tlsUndefined, VerifyCertificate=False
Proporcione el material del certificado antes de activar el servidor cuando SSL es True: RootCertFile, CertFile y KeyFile apuntan a archivos PEM (utilice la misma ruta para los tres cuando el archivo contiene la cadena completa), y Password solo es necesaria si la clave privada está cifrada. Establezca VerifyCertificate en True para solicitar y validar certificados de cliente (las sub-opciones FailIfNoCertificate y VerifyClientOnce refinan la comprobación) con VerifyDepth controlando la longitud de la cadena. Version selecciona una versión TLS específica (tls1_0, tls1_1, tls1_2, tls1_3) o deja la negociación abierta (tlsUndefined). OpenSSL_Options expone controles de bajo nivel: APIVersion (oslAPI_1_0/oslAPI_1_1/oslAPI_3_0), LibPath/LibPathCustom para localizar los binarios de OpenSSL, UnixSymLinks, ECDHE, CipherList, CurveList, MinVersion y X509Checks para la validación de nombre de host/IP.
VerifyCertificate no dice nada sobre si el certificado de cliente ha sido revocado desde que se emitió, por lo que un certificado cuya clave fue robada y cuyo número de serie ha sido revocado desde entonces sigue abriendo una sesión hasta que caduque. Con IOHandler=iohSChannel, el estado de revocación del certificado de cliente solo se consulta cuando SChannel_Options.Revocation.Check tiene un valor distinto de scrcDisabled (el predeterminado): scrcEndCertificate comprueba solo el certificado de cliente, scrcChainExcludeRoot lo comprueba junto con los certificados intermedios y scrcChain incluye la raíz. Revocation.Timeout limita toda la obtención de CRL y OCSP (5000 ms de forma predeterminada) para que un respondedor inaccesible no pueda bloquear el protocolo de enlace, Revocation.CacheOnly utiliza únicamente lo que Windows ya tiene en caché y nunca accede a la red, y Revocation.IgnoreRevocationOffline e Revocation.IgnoreNoRevocationCheck (ambos True) deciden si se acepta un respondedor inaccesible o un certificado de cliente que no publica información de revocación. Un certificado confirmado como revocado siempre se rechaza. Establecer Preset := tlspSecureDefaults habilita la comprobación como scrcChainExcludeRoot y mantiene las dos opciones de fallo permisivo, de modo que un cliente que antes se admitía se sigue admitiendo. Consulte SSL de servidor | Revocación de certificados de cliente en SChannel.
oServer := TsgcWebSocketServer.Create(nil);
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.RootCertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.Version := tls1_3;
oServer.SSLOptions.OpenSSL_Options.MinVersion := tls1_2;
oServer.SSLOptions.Port := 443;
oServer.Active := true;