Вход в Windows с аутентификацией по смарт-карте PIV#

В этом документе описано, как вручную обеспечить функцию PIV для входа в систему на смарт-карте Nitrokey 3 for Windows с помощью ключа и сертификата.

В будущем эта ручная инициализация может быть автоматизирована с помощью Windows MiniDriver.

Предупреждение

Функция PIV в Nitrokey 3 в настоящее время считается нестабильной и не доступна в стабильных прошивках. Для получения этой функции необходимо установить тестовую прошивку. Последующие обновления прошивки могут привести к потере данных и криптографических ключей. Более подробная информация приведена на сайте в документации по обновлению микропрограммного обеспечения.

Пререквизиты#

  • Сервер Windows с:

    • Active Directory (инструкции)

    • Центр сертификации (ЦС) с шаблоном сертификата для аутентификации входа в систему с использованием RSA 2048-битных ключей:

  • Пользовательская машина Windows, подключенная к домену сервера

  • Nitrokey 3 с PIV.

  • Система Linux с pivy и установленным PCSCD (sudo apt install pcscd), для обеспечения Nitrokey (шаг 1, 2 и 4). Вместо отдельной системы Linux вы можете установить WSL на Windows. Обратите внимание, что перед использованием pivy необходимо виртуально подключить Nitrokey к WSL и запустить PCSCD (sudo service start pcscd).

1: Сгенерируйте ключ на Nitrokey#

Ключ генерируется в слоте 9A (аутентификация).

pivy-tool -a rsa2048 generate 9A

Примечание

Если ключ администрирования не является ключом по умолчанию, его можно указать с помощью команды -A 3des -K 010203040506070801020304050607080102030405060708 . Аргументом к -A может быть также aes256, а аргументом к -K является ключ в шестнадцатеричном виде.

PIN-код пользователя также может быть указан с помощью -P 123456, или -P <value>, если он не используется по умолчанию. Если -P не указан, то он будет запрошен после генерации ключа.

Это относится ко всем командам pivy-tool.

Этот шаг может занять пару минут для ключей RSA, так как чистая программная реализация медленная.

Ожидаемый результат:

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

2: Сгенерируйте запрос на подписание сертификата (CSR)#

На этом шаге генерируется сертификат для ключа в слоте аутентификации. pivy-tool -n 'Nitro Test' -u "nitro@test.nitrokey.com" -T user-auth req-cert 9A

Имя пользователя Nitro Test и адрес электронной почты nitro@test.nitrokey.com должны быть изменены на собственные значения.

Ожидаемый результат:

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

Скопируйте запрос на подписание сертификата в файл request.csr.

3: Подписать КСО#

Переместите файл request.csr из предыдущего шага на сервер, на котором расположен центр сертификации. Убедитесь в консоли шаблонов сертификатов (certtmpl.msc ), что шаблон для пользователей может принимать имена субъектов из запроса:

В консоли шаблона сертификата, в параметре шаблона сертификата аутентификации, установите флажок "поставлять в запросе" на вкладке "имя субъекта".

Откройте PowerShell и подпишите запрос на подписание сертификата с помощью certreq.exe -attrib CertificateTemplate:Nitrotest -submit request.csr.

В результате откроется графический интерфейс, в котором можно выбрать нужный центр сертификации, если их несколько на данном сервере. Сохраните сертификат под именем certificate.crt.

4: Храните сертификат на Nitrokey#

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

5: Импортируйте сертификат в учетную запись пользователя#

Переместите certificate.der на пользовательское устройство Windows, и откройте менеджер сертификатов (Для пользователя, не для машины):

Откройте "панель управления сертификатами пользователей"

Импортируйте сертификат:

В действиях, все задачи, вы можете найти действие импорта

Как только это будет сделано, выйдите из системы. Войдите в систему с помощью Nitrokey, используя «параметры входа»