/* SQLI-SYN-003 – TLS-certifikatet udløber snart ============================================== Hvad og hvorfor Når certifikatet på en HTTPS-adresse udløber, afviser browsere og integrationer forbindelsen (eller viser en sikkerhedsadvarsel), og siden er i praksis nede. Udløbsdatoen læses ved hvert HTTPS-tjek – også når certifikatet afvises (fx selvsigneret). Tærskler (agentens appsettings.json) SQLInsight:SyntheticChecks:CertificateWarningDays standard 21 (fund når certifikatet udløber inden for så mange dage) SQLInsight:SyntheticChecks:CertificateCriticalDays standard 7 (Høj inden for så mange dage) Alvor Middel; Høj inden for CertificateCriticalDays; Kritisk når det er udløbet. Rettigheder Ingen ud over netværksadgang fra agentens server til adressen. Understøttede versioner Alle HTTPS-servere (TLS 1.2 og nyere fra agentens server). Collector src/SQLInsight.Servers/Synthetic/SyntheticCheckRunner.cs – HttpAsync (RemoteCertificateValidationCallback gemmer certifikatets NotAfter og Subject), fra src/SQLInsight.Agent/Servers/SyntheticCheckService.cs – RunCheckAsync. Regel src/SQLInsight.Rules/Servers/SyntheticCheckRules.cs – CertificateExpiryRule Evaluering Kun HTTP-tjek med https://. Den nyeste kørsel, der har set et certifikat, bruges: dage til udløb = NotAfter − nu. Uden set certifikat endnu: "ikke målbar". Andre tjek: "ikke relevant". Reglen bruger ikke SQL. Tjekket er en HTTPS GET; filen indeholder kun kommentarer og ændrer intet. Efterprøv med PowerShell (skrivebeskyttet; kør på agentens server): $c = New-Object System.Net.Sockets.TcpClient('ep.firma.local', 443) $s = New-Object System.Net.Security.SslStream($c.GetStream(), $false, { $true }) $s.AuthenticateAsClient('ep.firma.local'); $s.RemoteCertificate.GetExpirationDateString(); $c.Close() */