Connexion Windows avec authentification par carte à puce PIV#
Ce document explique comment provisionner manuellement la fonction PIV d’une carte à puce Nitrokey 3 pour Windows à l’aide d’une clé et d’un certificat.
À l’avenir, ce provisionnement manuel pourra être automatisé au moyen d’un mini-pilote Windows.
Conditions préalables#
Un serveur Windows avec :
Active Directory (instructions)
Une autorité de certification (CA), avec un modèle de certificat pour l’authentification de la connexion à l’aide de clés RSA 2048 bits :
Autorité de certification (instructions)
Modèle d’authentification (instructions)
Une machine utilisateur Windows reliée au domaine du serveur
Un Nitrokey 3 avec PIV
Un système Linux avec pivy et PCSCD installé (
sudo apt install pcscd
), pour approvisionner la Nitrokey (étapes 1, 2 et 4). Au lieu d’un système Linux séparé, vous pouvez installer WSL sur Windows. Notez que vous devez virtuellement attacher la Nitrokey à WSL et démarrer PCSCD (sudo service start pcscd
) avant d’utiliser pivy.
1 : Générer une clé sur le Nitrokey#
La clé est générée dans l’emplacement 9A (authentification).
pivy-tool generate 9A -a rsa2048
Note
Si la clé d’administration n’est pas celle par défaut, elle peut être spécifiée avec -A 3des -K 010203040506070801020304050607080102030405060708
. L’argument de -A
peut également être aes256
, et l’argument de -K
est la clé en hexadécimal.
Le code PIN de l’utilisateur peut également être spécifié avec -P 123456
, ou -P <value>
s’il ne s’agit pas de la valeur par défaut. Si -P
n’est pas fourni, il sera demandé après la génération de la clé.
Ceci s’applique à toutes les commandes pivy-tool
.
Cette étape peut prendre quelques minutes pour les clés RSA, car l’implémentation purement logicielle est lente.
Résultat attendu:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKO5ENwrK3qKBAgDkyq1tfiw5JxnoCEIiM3Vc+8Eylux04r1sgjHEyqbOvpScObZuchxFZZ5LdeHynvFn3c07K4HpoZ/7NjLzUYOmlVAy4wpEwRs9psbrT6wbvHVLyffZiiSPW15HHQKcUZZ30WDunh5m7xzvY9ej810QIW/P724MFWTbRdpqmG8m1qWCUM5dqkmpiprI/WeD+VmTcQWbJJ+oyoPyxmwzGyAotl7mVC6EYdcfvyBSNQdVdGfYGxjNEec4aWxoFRg4ADfpPnYD+gLxHcj/9s7o/wdMhXRiSio1tjsEjaeuOICGLaiiLGMfLxpfEApb8qJgsEFgYl6kn PIV_slot_9A@9E424375A38449E59B3DF89D9B90E601
2 : Générer une demande de signature de certificat (CSR)#
Cette étape génère un certificat pour la clé dans le slot d’authentification. pivy-tool req-cert 9A -n 'Nitro Test' -u "nitro@test.nitrokey.com" -T user-auth
Le nom d’utilisateur Nitro Test
et l’adresse électronique nitro@test.nitrokey.com
doivent être remplacés par leurs propres valeurs.
Résultat attendu :
-----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-----
Copier la demande de signature du certificat dans un fichier request.csr
3 : Signer le CSR#
Déplacez le fichier request.csr de l’étape précédente sur le serveur qui héberge l’autorité de certification. Vérifiez dans la console du modèle de certificat (certtmpl.msc
) que le modèle pour les utilisateurs peut accepter les noms d’objet de la demande :

Ouvrez PowerShell et signez la demande de signature du certificat avec certreq.exe -attrib CertificateTemplate:Nitrotest -submit request.csr
Cela ouvrira une interface graphique dans laquelle vous pourrez sélectionner l’autorité de certification correcte s’il y en a plusieurs sur ce serveur. Enregistrez le certificat sous certificate.crt
4 : Stocker le certificat sur la Nitrokey#
cat certificate.der | pivy-tool write-cert 9A
5 : Importer le certificat dans le compte de l’utilisateur#
Déplacez certificate.der
sur le périphérique Windows de l’utilisateur et ouvrez le gestionnaire de certificats (Pour l’utilisateur, pas pour la machine) :

Importer le certificat :

Une fois cette opération effectuée, déconnectez-vous. Connectez-vous avec la clé Nitrokey en utilisant les « options de connexion ».