Windows-login met PIV Smartcard-authenticatie#

In dit document wordt uitgelegd hoe u de PIV-functie van een Nitrokey 3 voor Windows smartcard handmatig kunt voorzien van een sleutel en een certificaat.

In de toekomst kan deze handmatige voorziening worden geautomatiseerd via een Windows MiniDriver.

Waarschuwing

De PIV-functie van de Nitrokey 3 wordt momenteel als instabiel beschouwd en is niet beschikbaar op de stabiele firmwarereleases. Om deze functionaliteit te verkrijgen, moet een testfirmware worden geïnstalleerd. Latere firmware-updates kunnen leiden tot verlies van gegevens en cryptografische sleutels. Raadpleeg de documentatie over firmware-updates voor meer informatie.

Vereisten#

  • Een Windows server met:

    • Active Directory (instructies)

    • Een certificaatautoriteit (CA), met een certificaatsjabloon voor inlogverificatie met RSA 2048 bit sleutels:

  • Een Windows-gebruikersmachine die is aangesloten op het domein van de server

  • Een Nitrokey 3 met PIV

  • Een Linux-systeem met pivy en PCSCD geïnstalleerd (sudo apt install pcscd), om de Nitrokey te provisioneren (stap 1, 2 en 4). In plaats van een apart Linux-systeem kunt u WSL op Windows installeren. Merk op dat u virtueel de Nitrokey aan WSL moet koppelen en PCSCD moet starten (sudo service start pcscd) voordat u pivy gebruikt.

1: Genereer een sleutel op de Nitrokey#

De sleutel wordt gegenereerd in slot 9A (authenticatie).

pivy-tool -a rsa2048 generate 9A

Notitie

Als de administratiesleutel niet de standaardsleutel is, kan deze worden opgegeven met -A 3des -K 010203040506070801020304050607080102030405060708 . Het argument voor -A kan ook aes256 zijn, en het argument voor -K is de sleutel in hexadecimaal.

De gebruikers-PIN kan ook worden opgegeven met -P 123456, of -P <value> als het niet de standaard is. Als -P niet is opgegeven, wordt hiernaar gevraagd na het genereren van de sleutel.

Dit geldt voor alle pivy-tool commando’s.

Deze stap kan een paar minuten duren voor RSA-sleutels, aangezien de pure software-implementatie traag is.

Verwachte output:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKO5ENwrK3qKBAgDkyq1tfiw5JxnoCEIiM3Vc+8Eylux04r1sgjHEyqbOvpScObZuchxFZZ5LdeHynvFn3c07K4HpoZ/7NjLzUYOmlVAy4wpEwRs9psbrT6wbvHVLyffZiiSPW15HHQKcUZZ30WDunh5m7xzvY9ej810QIW/P724MFWTbRdpqmG8m1qWCUM5dqkmpiprI/WeD+VmTcQWbJJ+oyoPyxmwzGyAotl7mVC6EYdcfvyBSNQdVdGfYGxjNEec4aWxoFRg4ADfpPnYD+gLxHcj/9s7o/wdMhXRiSio1tjsEjaeuOICGLaiiLGMfLxpfEApb8qJgsEFgYl6kn PIV_slot_9A@9E424375A38449E59B3DF89D9B90E601

2: Genereer een certificaatondertekeningsverzoek (CSR)#

Deze stap genereert een certificaat voor de sleutel in de authenticatiesleuf. pivy-tool -n ‘Nitro Test’ -u “nitro@test.nitrokey.com” -T user-auth req-cert 9A

De Nitro Test gebruikersnaam en het nitro@test.nitrokey.com e-mailadres moeten worden gewijzigd in eigen waarden.

Verwachte output:

-----BEGIN CERTIFICATE REQUEST-----
MIIC4DCCAcgCAQEwFTETMBEGA1UEAwwKTml0cm8gVGVzdDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAMo7kQ3CsreooECAOTKrW1+LDknGegIQiIzdVz7w
TKW7HTivWyCMcTKps6+lJw5tm5yHEVlnkt14fKe8WfdzTsrgemhn/s2MvNRg6aVU
DLjCkTBGz2mxutPrBu8dUvJ99mKJI9bXkcdApxRlnfRYO6eHmbvHO9j16PzXRAhb
8/vbgwVZNtF2mqYbybWpYJQzl2qSamKmsj9Z4P5WZNxBZskn6jKg/LGbDMbICi2X
uZULoRh1x+/IFI1B1V0Z9gbGM0R5zhpbGgVGDgAN+k+dgP6AvEdyP/2zuj/B0yFd
GJKKjW2OwSNp644gIYtqKIsYx8vGl8QClvyomCwQWBiXqScCAwEAAaCBhTCBggYJ
KoZIhvcNAQkOMXUwczAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIGwDAfBgNV
HSUEGDAWBggrBgEFBQcDAgYKKwYBBAGCNxQCAjAyBgNVHREEKzApoCcGCisGAQQB
gjcUAgOgGQwXbml0cm9AdGVzdC5uaXRyb2tleS5jb20wDQYJKoZIhvcNAQELBQAD
ggEBAH6XBlBmc7dQP0mt7uXOyIu8xRSYSfxKBJGjPl0IKDHWke3/4frU5C99/KS/
b9/T4JrlZa/9letjMj8hV4a+pdE0Gpxy+Ac1a9XlMki35UESOXC0JSyirBBLnNtD
qtHKtfPeQ3Csbsj57qjdqBMlWII5cz3jO9EpEG2FgxreJwY5s58KuKit01AJDIWt
GYg9P7MblEEO8iPjcFqccsPTRgU04COT6dOFZ8bGZ18UsnAVMXPOdcR7cppp8mL+
QZCyqdk1m+91rtkJPkqVUK/0o8MJj5k3Ch4ANvQEWnOabRumJaHDu4PmhsqLnQJA
eGQvuPRBmR71GRkGmqu+e1oyze8=
-----END CERTIFICATE REQUEST-----

Kopieer het verzoek om ondertekening van het certificaat naar een bestand request.csr

3: Onderteken het CSR#

Verplaats het request.csr bestand uit de vorige stap naar de server die de certificaatautoriteit host. Controleer in de certificaatsjabloonconsole (certtmpl.msc ) dat het sjabloon voor de gebruikers onderwerpsnamen uit het verzoek kan accepteren:

Schakel in de certificaatsjabloonconsole, in de parameter voor het sjabloon van het authenticatiecertificaat, "supply in request" in op het tabblad "subject name".

Open PowerShell en onderteken het verzoek om ondertekening van het certificaat met certreq.exe -attrib CertificateTemplate:Nitrotest -submit request.csr.

Dit opent een GUI waar u de juiste Certificate Authority kunt selecteren als er meerdere op deze server zijn. Sla het certificaat op als certificate.crt

4: Bewaar het certificaat op de Nitrokey#

cat certificate.der | pivy-tool write-cert 9A

5: Importeer het certificaat naar de gebruikersaccount#

Verplaats certificate.der naar het Windows-apparaat van de gebruiker, en open de certificaatmanager (Voor de gebruiker, niet de machine):

Open het configuratiescherm voor gebruikerscertificaten

Importeer het certificaat:

In acties, alle taken, vindt u de importactie

Zodra dit is gebeurd, logt u uit. Log in met de Nitrokey via de “aanmeldingsopties”.