TsgcWebSocketServer › Properties › SSLOptions
Hält Zertifikatspfade, TLS-Versionsauswahl und OpenSSL-Tuning für den TLS-Listener.
property SSLOptions: TsgcWSSSL_Options read FSSLOptions write SetSSLOptions;
Version=tlsUndefined, VerifyCertificate=False
Stellen Sie das Zertifikatsmaterial bereit, bevor Sie den Server aktivieren, wenn SSL True ist: RootCertFile, CertFile und KeyFile verweisen auf PEM-Dateien (verwenden Sie für alle drei denselben Pfad, wenn die Datei die vollständige Kette enthält), und Password ist nur erforderlich, wenn der private Schlüssel verschlüsselt ist. Setzen Sie VerifyCertificate auf True, um Client-Zertifikate anzufordern und zu validieren (die Unteroptionen FailIfNoCertificate und VerifyClientOnce verfeinern die Prüfung), wobei VerifyDepth die Kettenlänge steuert. Version wählt eine bestimmte TLS-Version (tls1_0, tls1_1, tls1_2, tls1_3) oder lässt die Aushandlung offen (tlsUndefined). OpenSSL_Options stellt Low-Level-Stellschrauben bereit: APIVersion (oslAPI_1_0/oslAPI_1_1/oslAPI_3_0), LibPath/LibPathCustom zum Auffinden der OpenSSL-Binärdateien, UnixSymLinks, ECDHE, CipherList, CurveList, MinVersion und X509Checks für die Hostname-/IP-Validierung.
VerifyCertificate sagt nichts darüber aus, ob das Client-Zertifikat seit seiner Ausstellung widerrufen wurde, sodass ein Zertifikat, dessen Schlüssel gestohlen und dessen Seriennummer inzwischen widerrufen wurde, bis zu seinem Ablauf weiterhin eine Sitzung öffnet. Mit IOHandler=iohSChannel wird der Widerrufsstatus des Client-Zertifikats nur dann geprüft, wenn SChannel_Options.Revocation.Check auf einen anderen Wert als scrcDisabled (Standard) gesetzt ist: scrcEndCertificate prüft ausschließlich das Client-Zertifikat, scrcChainExcludeRoot prüft es zusammen mit den Zwischenzertifikaten und scrcChain schließt das Stammzertifikat ein. Revocation.Timeout begrenzt den gesamten Abruf über CRL und OCSP (standardmäßig 5000 ms), sodass ein nicht erreichbarer Responder den Handshake nicht blockieren kann, Revocation.CacheOnly verwendet nur das, was Windows bereits zwischengespeichert hat, und greift nie auf das Netzwerk zu, und Revocation.IgnoreRevocationOffline sowie Revocation.IgnoreNoRevocationCheck (beide True) entscheiden, ob ein nicht erreichbarer Responder oder ein Client-Zertifikat ohne veröffentlichte Widerrufsinformationen akzeptiert wird. Ein Zertifikat, dessen Widerruf bestätigt ist, wird immer abgelehnt. Das Setzen von Preset := tlspSecureDefaults aktiviert die Prüfung als scrcChainExcludeRoot und behält beide Soft-Fail-Einstellungen bei, sodass ein Client, der zuvor zugelassen wurde, weiterhin zugelassen wird. Siehe Server SSL | SChannel Client Certificate Revocation.
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;