Inicio de sesión en Windows con autenticación de tarjeta inteligente PIV#

Este documento explica cómo aprovisionar manualmente la función PIV de un inicio de sesión con tarjeta inteligente Nitrokey 3 for Windows con una clave y un certificado.

En el futuro, este aprovisionamiento manual podrá automatizarse mediante un MiniDriver de Windows.

Advertencia

La función PIV de Nitrokey 3 se considera actualmente inestable y no está disponible en las versiones estables de firmware. Para obtener dicha funcionalidad es necesario instalar un firmware de prueba. Las actualizaciones posteriores del firmware pueden provocar la pérdida de datos y claves criptográficas. Por favor, consulte la documentación de actualización del firmware para más información.

Requisitos previos#

  • Un servidor Windows con:

    • Directorio Activo (instrucciones)

    • Una autoridad de certificación (CA), con una plantilla de certificado para la autenticación de inicio de sesión utilizando claves RSA de 2048 bits:

  • Una máquina de usuario Windows unida al dominio del servidor

  • Un Nitrokey 3 con PIV

  • Un sistema Linux con pivy y PCSCD instalado (sudo apt install pcscd), para aprovisionar la Nitrokey (pasos 1, 2 y 4). En lugar de un sistema Linux independiente, puede instalar WSL en Windows. Ten en cuenta que necesitas conectar virtualmente la Nitrokey a WSL e iniciar PCSCD (sudo service start pcscd) antes de usar pivy.

1: Generar una clave en la Nitrokey#

La clave se genera en la ranura 9A (autenticación).

pivy-tool -a rsa2048 generate 9A

Nota

Si la clave de administración no es la predeterminada, puede especificarse con -A 3des -K 010203040506070801020304050607080102030405060708 . El argumento de -A también puede ser aes256, y el argumento de -K es la clave en hexadecimal.

El PIN de usuario también puede especificarse con -P 123456, o -P <value> si no es el predeterminado. Si no se indica -P, se solicitará tras la generación de la clave.

Esto se aplica a todos los comandos pivy-tool.

Este paso puede llevar un par de minutos para las claves RSA, ya que la implementación de software puro es lenta.

Salida esperada:

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

2: Generar una solicitud de firma de certificado (CSR)#

Este paso genera un certificado para la clave en la ranura de autenticación. pivy-tool -n “Nitro Test” -u «nitro@test.nitrokey.com» -T user-auth req-cert 9A

El nombre de usuario Nitro Test y la dirección de correo electrónico nitro@test.nitrokey.com deben cambiarse por valores propios.

Resultado esperado:

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

Copie la solicitud de firma de certificado en un archivo request.csr

3: Firmar el CSR#

Mueva el archivo request.csr del paso anterior al servidor que aloja la autoridad de certificación. Compruebe en la consola de plantillas de certificados (certtmpl.msc ) que la plantilla para los usuarios puede aceptar nombres de asunto de la solicitud:

En la consola de plantillas de certificados, en el parámetro de la plantilla de certificado de autenticación, active la opción "suministrar en la solicitud" en la pestaña "nombre del asunto".

Abra PowerShell y firme la solicitud de firma de certificado con certreq.exe -attrib CertificateTemplate:Nitrotest -submit request.csr.

Esto abrirá una GUI donde puede seleccionar la Autoridad de Certificación correcta si hay múltiples en este servidor. Guarde el certificado como certificate.crt

4: Almacenar el certificado en la Nitrokey#

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

5: Importar el certificado a la cuenta de usuario#

Mueva certificate.der al dispositivo Windows del usuario, y abra el gestor de certificados (Para el usuario, no para la máquina):

Abra el "panel de control de gestión de certificados de usuario".

Importe el certificado:

En acciones, todas las tareas, puede encontrar la acción de importación

Una vez hecho esto, cierre la sesión. Inicie sesión con la Nitrokey utilizando las «opciones de inicio de sesión».