Om de authenticiteit van SAML assertions en authentication responses te verifiëren, gebruik je digitale handtekeningen. Dat betekent dat je token signing certificaten, ook wel ‘signing keys’ genoemd, moet aanmaken en configureren in je Identity Provider-systeem. Je moet de public signing key publiceren in de vorm van een self-signed certificate in de metadata. De gateway van SURFconext leest deze metadata in, samen met de public key, zodat berichten die van jouw organisatie komen, gevalideerd kunnen worden.
Hoewel SURFconext alleen de public key uit het certificaat gebruikt, vertoont sommige software problemen als er iets mis is met het certificaat, bijvoorbeeld als de geldigheidsduur van het certificaat verloopt. Hieronder lees je aandachtspunten bij het verlopen van token signingcertificaten.
Certificaat vernieuwen in ADFS 2.0 (Legacy)
Bij de installatie van de ADFS server is een self-signed tokencertificaat geïnstalleerd met een standaard geldigheidsduur van 1 jaar. Dit certificaat wordt automatisch vernieuwd voordat de geldigheidsduur is verstreken. Volgens de standaardinstellingen wordt 20 dagen voor het verstrijken van het oude certificaat een nieuw certificaat aangemaakt.
Wij raden je aan om de geldigheidsduur van dit certificaat te verlengen tot bijvoorbeeld 5 jaar, omdat Service Providers elke keer dat een cerificate rollover plaatsvindt het nieuwe certificaat moeten importeren. En tot die tijd zal de dienst onbereikbaar zijn voor jouw gebruikers.
Als je het automatisch gegenereerde token signingcertificaat wilt verlengen en vervangen, moet je de volgende stappen doorlopen:
Deze stappen zijn bedoeld voor een nieuwe installatie. Voor een bestaande productie-installatie voer je alleen de stappen 1 t/m 3 uit. De langere geldigheidsduur wordt dan pas van kracht na de eerstvolgende (automatische) rollover.
- Start Windows PowerShell.
- Laad de ADFS plugin met het commando
Add-PSSnapin Microsoft.Adfs.PowerShell
- Zet de geldigheidsduur van certificaten op 5 jaar (1825 dagen) met:
Set-ADFSProperties -CertificateDuration 1825
- Activeer het nieuwe certificaat met:
Update-ADFSCertificate -CertificateType Token-Signing -Urgent
Voer deze stap alleen uit als de server nog niet in productie is genomen. Voor productieservers wacht je tot het eerstvolgende moment waarop een certificate rollover plaatsvindt. - Controleer of het certificaat is verlengd met:
Get-ADFSCertificate -CertificateType Token-Signing
- De verloopdatum van het certificaat staat vermeld onder 'Not After'.
Certificaat vernieuwen voor andere Identity Provider-systemen
Voor sommige Identity Provider-systemen (bij voorbeeld SimpleSAMLphp) levert het verlopen van het token signingcertificaat geen problemen op. Bij andere software kan dit wel een probleem geven. Ook als die software de geldigheidsduur van certificaten zelf niet kan aanpassen, kun je waarschijnlijk wel een bestaand certificaat importeren. Het certificaat dat je wilt importeren, maak je dan met een andere tool, zoals OpenSSL.
Met OpenSSL kun je een self-signed tokencertificaat aanmaken. Je doet dat met de volgende commando’s:
openssl genrsa -out key.pem 3072 openssl req -new -key key.pem -out req.csr -subj '/CN=idp.example.org Signing Certificate' openssl x509 -req -in req.csr -signkey key.pem -days 1825 -out cert.pem
Als een bestaand certificaat moet worden verlengd (in plaats van een nieuw gegenereerd certificaat), gebruik je het commando:
openssl x509 -in oldcert.pem -signkey key.pem -days 3650 -out newcert.pem
Zorgen dat het vernieuwde certificaat ook in SURFconext bekend is
De truc voor een interruptieloze certificaat roll-over bij een IdP bestaat uit de volgende stappen:
- Geruime tijd voor het verlopen van het huidige certificaat laad je het nieuwe certificaat in de configuratie van je IdP, zonder het actief te maken.
- Daags erna heeft SURFconext het nieuwe certificaat geladen, naast het bestaande certificaat. Dit gebeurt automatisch, via een script dat elke nacht op basis van de metadata-URL van de IdP controleert of op de IdP een nieuw SAML signing certificaat is geladen.
SURFconext herkent nu zowel het huidige als het nieuwe certificaat. - Op de geplande datum maak je het nieuwe certificaat actief op je IdP. Dit certificaat wordt direct herkend door SURFconext (zie vorige stap).
- Daags erna kun je het oude certificaat uit de configuratie van je IdP verwijderen.