TsgcWebSocketServer_HTTPAPI › Metody › ReloadCertificates

ReloadCertificates Metoda

Ponownie wiąże odnowiony certyfikat TLS powiązań SSL HTTP.sys bez zatrzymywania serwera; nawiązane połączenia pozostają nietknięte.

Składnia

procedure ReloadCertificates;

Uwagi

Wywołaj ReloadCertificates po odnowieniu certyfikatu (na przykład przez klienta ACME lub Let's Encrypt), aby zainstalować nowy certyfikat bez restartu. Przypisz nową wartość SSLOptions.Hash (oraz CertStoreName, jeśli certyfikat znajduje się w innym magazynie), a następnie wywołaj ReloadCertificates. Metodę można wywołać z dowolnego wątku, gdy serwer jest aktywny. Jeśli serwer nie jest aktywny lub SSL jest wyłączone, wywołanie nic nie robi. Gdy BindingOptions.ConfigureSSLCertificate ma wartość True (domyślnie), ReloadCertificates atomowo wiąże ponownie certyfikat każdego powiązania SSL, o ile Windows to obsługuje. Wymaga tych samych uprawnień administratora co uruchomienie serwera z SSL. Nawiązane połączenia pozostają nietknięte, a nowe uzgodnienia TLS używają nowego certyfikatu. Jeśli nowego certyfikatu nie można powiązać, zgłaszany jest wyjątek, a serwer nadal używa poprzedniego certyfikatu. Gdy ConfigureSSLCertificate ma wartość False, powiązanie jest zarządzane poza komponentem (netsh), więc ReloadCertificates zgłasza wyjątek, a powiązanie trzeba zaktualizować za pomocą netsh. W .NET serwer http.sys działa na HttpListener, który nie może ponownie powiązać certyfikatu: powiązanie jest zawsze zarządzane za pomocą netsh, więc gdy serwer jest aktywny z https, ReloadCertificates zgłasza NotSupportedException, a certyfikat trzeba odnowić za pomocą netsh http update sslcert. Zobacz Bezpieczne połączenia.

Przykład


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

Powrót do metod