Main content

Wat is 2-zijdig TLS en hoe werkt het?

Met 2-zijdig TLS (ook wel 2-zijdig SSL genoemd) controleren zowel de client als server elkaar om er zeker van te zijn dat beide partijen een vertrouwde communicatie hebben. Dit gebeurt bij het opzetten van de HTTP-verbinding door middel van een certificaat uitwisseling. Indien de certificaten correct zijn, wordt de HTTP-verbinding beveiligd en is de verbinding dus een HTTPS-verbinding.

Waar moet 2-zijdig TLS gebruikt worden in het CGI koppelvlak?

In het CGI koppelvlak (en ook het SOAP-koppelvlak) wordt 2-zijdig TLS gebruikt in de verbinding met de DigiD applicatieservers die bereikbaar zijn op was.digid.nl. Afhankelijk van de inrichting van het koppelvlak moet dus bij het opzetten van de HTTP-verbinding met de server was.digid.nl 2-zijdig TLS gebruikt worden.

Indien er gebruik gemaakt wordt van een uitgaande proxyserver, wordt de verbinding waarschijnlijk op de proxyserver (opnieuw) opgezet. In een dergelijke configuratie zal dan mogelijk 2-zijdig TLS op de proxyserver toegepast moeten worden.

De daadwerkelijke toepassing van het certificaat in de applicatie hangt af van welke infrastructuur, platform en code gebruikt wordt. In samenwerking met de leverancier(s) van de code, het platform en/of de infrastructuur kan bepaald worden wat de beste oplossing is. DigiD kan daar geen inzicht in geven. Het advies is dus om dit op te nemen met de leverancier(s) van de applicatie.

Welk certificaat moet gebruikt worden voor 2-zijdig TLS in het CGI koppelvlak?

Er moet een PKIo Private Root CA - G1 certificaat (met daarin het OIN van de organisatie) gebruikt worden.

Omdat dit certificaat, aan de hand van het OIN dat in het certificaat opgenomen is, alleen maar aangeeft welke organisatie het betreft, kan hetzelfde certificaat gebruikt worden voor zowel de productie-omgeving als de preproductie-omgeving van DigiD. Het zelfde certificaat kan dus gebruikt worden bij het opzetten van de verbinding met de server was-preprod1.digid.nl én met was.digid.nl. Ook kan hetzelfde certificaat gebruikt worden voor meerdere aansluitingen op DigiD.

Ook is het niet van belang op welk (sub)domein het certificaat uitgegeven is (de velden Common Name CN en Subject Alternative Name SAN). Voor 2-zijdig TLS in het CGI koppelvlak met DigiD kan er dus gebruik gemaakt worden van een certificaat dat reeds aanwezig is voor een ander koppelvlak, zelfs als dat een koppelvlak niet met DigiD is. Er kan dus bijvoorbeeld een certificaat gebruikt worden met als CN het (sub)domein backoffice.organisatie.nl, en zelfs als dit domein niet is opgenomen in DNS (en dus niet vindbaar is op Internet). Wel moet er goed gekeken worden naar de risico's als een certificaat voor meerdere doeleinden wordt gebruikt: als het certificaat niet meer werkt (verlopen of ingetrokken), dan worden meerdere verbindingen getroffen.

Voor een leverancier van meerdere aansluitingen op DigiD, bijvoorbeeld een leverancier die voor meerdere organisaties de aansluitingen beheert, is het mogelijk om een certificaat op naam van de leverancier te gebruiken voor 2-zijdig TLS. Een certificaat met als CN het (sub)domein leverancier.nl is dus ook mogelijk, zolang het maar een PKIo Private Root CA - G1 certificaat is (met daarin het OIN van de leverancier). Hiermee kan in sommige gevallen een efficiëntere aansluiting op DigiD gemaakt worden.

Hoe kan ik de werking van 2-zijdig TLS vanuit de applicatie testen?

De werking van 2-zijdig TLS kan getest worden vanaf de server / omgeving waar de private sleutel van het certificaat beschikbaar is. Door gebruik te maken van een HTTP-client (commandline-software zoals cURL, in sommige gevallen ook een browser) kan de verbinding met was-preprod1.digid.nl getest worden en moet het certificaat meegegeven worden in de verbinding. Afhankelijk van de respons van de DigiD applicatieserver kan bepaald worden of het certificaat op de juiste wijze wordt gebruikt voor 2-zijdig TLS.

De verschillende test-scenario's zijn hieronder als voorbeeld uitgewerkt bij gebruik van cURL vanaf de commandline. Testscenario 5 resulteert in een "geslaagde" verbinding met DigiD.

Update

4 januari 2022: testscenario’s aangevuld.

Nr Testscenario cURL commando Output van cURL Resultaat
1 Geen certificaat meegeven in de verbinding curl -v https://was-preprod1.digid.nl/ 302 Moved Temporarily Redirect naar www.digid.nl
2 Verkeerde certificaat of private sleutel meegeven in de verbinding curl --key verkeerde.key --cert verkeerde.crt -v https://was-preprod1.digid.nl/ curl: (58) unable to set private key file: 'verkeerde.key' type PEM Er wordt geen verbinding opgezet
3 Een niet PKIo certificaat meegeven in de verbinding curl --key geenPKIo.key --cert geenPKIo.crt -v https://was-preprod1.digid.nl/ curl: (56) OpenSSL SSL_read: connection reset by peer
* Afhankelijk van het OS en de SSL library kan hier een andere melding komen. Het resultaat is dat de verbinding wordt afgebroken.
Verbinding wordt afgebroken
4 Een PKIo certificaat meegeven in de verbinding dat niet geldig is curl --key ongeldigePKIo.key --cert ongeldigePKIo.crt -v https://was-preprod1.digid.nl/ curl: (56) OpenSSL SSL_read: connection reset by peer
* Afhankelijk van het OS en de SSL library kan hier een andere melding komen. Het resultaat is dat de verbinding wordt afgebroken.
Verbinding wordt afgebroken
5 Een PKIo certificaat meegeven in de verbinding dat wel geldig is.  curl --key goedePKIo.key --cert goedePKIo.crt -v https://was-preprod1.digid.nl/ 404 Not Found Foutpagina (omdat het domein zonder URI wordt geraadpleegd)