TsgcWebSocketServer_HTTPAPI › Methoden › ReloadCertificates

ReloadCertificates Methode

Koppelt het vernieuwde TLS-certificaat van de HTTP.sys SSL-bindings opnieuw zonder de server te stoppen; bestaande verbindingen worden niet beïnvloed.

Syntaxis

procedure ReloadCertificates;

Opmerkingen

Roep ReloadCertificates aan na een certificaatvernieuwing (bijvoorbeeld een ACME- of Let's Encrypt-vernieuwing) om het nieuwe certificaat zonder herstart te installeren. Wijs de nieuwe SSLOptions.Hash toe (en CertStoreName als het certificaat in een andere store staat) en roep daarna ReloadCertificates aan. De methode kan vanuit elke thread worden aangeroepen terwijl de server actief is. Als de server niet actief is of SSL is uitgeschakeld, doet de aanroep niets. Wanneer BindingOptions.ConfigureSSLCertificate True is (de standaardwaarde), koppelt ReloadCertificates het certificaat van elke SSL-binding opnieuw, atomair waar Windows dit ondersteunt. Hiervoor zijn dezelfde beheerdersrechten nodig als voor het starten van de server met SSL. Bestaande verbindingen blijven onaangetast en nieuwe TLS-handshakes gebruiken het nieuwe certificaat. Als het nieuwe certificaat niet kan worden gekoppeld, wordt een uitzondering gegenereerd en blijft de server het vorige certificaat gebruiken. Wanneer ConfigureSSLCertificate False is, wordt de binding buiten het component beheerd (netsh), zodat ReloadCertificates een uitzondering genereert en de binding met netsh moet worden bijgewerkt. In .NET draait de http.sys-server op HttpListener, die het certificaat niet opnieuw kan binden: de binding wordt altijd met netsh beheerd, zodat ReloadCertificates een NotSupportedException genereert zolang de server met https actief is en het certificaat met netsh http update sslcert moet worden vernieuwd. Zie Beveiligde verbindingen.

Voorbeeld


procedure TForm1.RenewCertificate;
begin
  try
    oServer.SSLOptions.Hash := 'A1B2C3D4E5F60718293A4B5C6D7E8F9012345678';
    oServer.ReloadCertificates;
  except
    on E: Exception do
      ShowMessage('Certificate reload failed: ' + E.Message);
  end;
end;

Terug naar methoden