Accesso a Windows con autenticazione Smartcard PIV#

Questo documento spiega come eseguire il provisioning manuale della funzione PIV di una smartcard Nitrokey 3 for Windows con una chiave e un certificato.

In futuro, questo provisioning manuale potrà essere automatizzato attraverso un MiniDriver di Windows.

Avvertimento

La funzione PIV di Nitrokey 3 è attualmente considerata instabile e non è disponibile nelle versioni stabili del firmware. Per ottenere tale funzionalità è necessario installare un firmware di prova. I successivi aggiornamenti del firmware possono comportare la perdita di dati e chiavi crittografiche. Per ulteriori informazioni, consultare la documentazione sull’aggiornamento del firmware.

Prerequisiti#

  • Un server Windows con:

    • Active Directory (istruzioni)

    • Un’autorità di certificazione (CA), con un modello di certificato per l’autenticazione di accesso che utilizza chiavi RSA a 2048 bit:

  • Un computer utente Windows collegato al dominio del server

  • Un Nitrokey 3 con PIV

  • Un sistema Linux con pivy e PCSCD installato (sudo apt install pcscd), per effettuare il provisioning di Nitrokey (fasi 1, 2 e 4). Invece di un sistema Linux separato, è possibile installare WSL su Windows. Si noti che è necessario collegare virtualmente la Nitrokey a WSL e avviare PCSCD (sudo service start pcscd) prima di utilizzare pivy.

1: Generare una chiave su Nitrokey#

La chiave viene generata nello slot 9A (autenticazione).

pivy-tool -a rsa2048 generate 9A

Nota

Se la chiave di amministrazione non è quella predefinita, può essere specificata con -A 3des -K 010203040506070801020304050607080102030405060708 . L’argomento di -A può essere anche aes256 e l’argomento di -K è la chiave in esadecimale.

Il PIN utente può essere specificato anche con -P 123456, o -P <value> se non è quello predefinito. Se -P non viene fornito, verrà richiesto dopo la generazione della chiave.

Questo vale per tutti i comandi di pivy-tool.

Questo passaggio può richiedere un paio di minuti per le chiavi RSA, poiché l’implementazione del software puro è lenta.

Uscita prevista:

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

2: Generare una richiesta di firma del certificato (CSR)#

Questo passo genera un certificato per la chiave nello slot di autenticazione. pivy-tool -n 'Nitro Test' -u "nitro@test.nitrokey.com" -T user-auth req-cert 9A

Il nome utente Nitro Test e l’indirizzo e-mail nitro@test.nitrokey.com devono essere modificati con valori propri.

Risultato previsto:

-----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-----

Copiare la richiesta di firma del certificato in un file request.csr

3: Firmare il CSR#

Spostare il file request.csr del passo precedente sul server che ospita l’autorità di certificazione. Verificare nella console dei modelli di certificato (certtmpl.msc ) che il modello per gli utenti possa accettare nomi di soggetti dalla richiesta:

Nella console dei modelli di certificato, nel parametro per il modello di certificato di autenticazione, disattivare "fornire nella richiesta" nella scheda "nome oggetto".

Aprire PowerShell e firmare la richiesta di firma del certificato con certreq.exe -attrib CertificateTemplate:Nitrotest -submit request.csr

Si aprirà un’interfaccia grafica in cui è possibile selezionare l’autorità di certificazione corretta, se ce ne sono diverse sul server. Salvare il certificato come certificate.crt

4: Memorizzare il certificato su Nitrokey#

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

5: Importare il certificato nell’account utente#

Spostare certificate.der sul dispositivo Windows dell’utente e aprire il gestore di certificati (Per l’utente, non per la macchina):

Aprite il "pannello di controllo dei certificati utente".

Importare il certificato:

In azioni, tutti i compiti, è possibile trovare l'azione di importazione

Una volta terminato, effettuare il logout. Effettuare il login con Nitrokey utilizzando le «opzioni di accesso».