TsgcWebSocketServer_HTTPAPI › Metody › ReloadCertificates
Ponownie wiąże odnowiony certyfikat TLS powiązań SSL HTTP.sys bez zatrzymywania serwera; nawiązane połączenia pozostają nietknięte.
procedure ReloadCertificates;
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.
procedure TForm1.RenewCertificate;
begin
try
oServer.SSLOptions.Hash := 'A1B2C3D4E5F60718293A4B5C6D7E8F9012345678';
oServer.ReloadCertificates;
except
on E: Exception do
ShowMessage('Certificate reload failed: ' + E.Message);
end;
end;