Влизане в Windows с удостоверяване с PIV смарткарта#

В този документ се обяснява как ръчно да се осигури функцията PIV на смарткартата Nitrokey 3 for Windows за влизане в системата с ключ и сертификат.

В бъдеще това ръчно осигуряване може да бъде автоматизирано с помощта на Windows MiniDriver.

Warning

Понастоящем функцията PIV на Nitrokey 3 се счита за нестабилна и не е налична в стабилните версии на фърмуера. За да получите тази функционалност, е необходимо да инсталирате тестова версия на фърмуера. Последващите актуализации на фърмуера могат да доведат до загуба на данни и криптографски ключове. За повече информация вижте документацията за актуализация на фърмуера.

Предварителни условия#

  • Сървър на Windows с:

    • Активна директория (инструкции)

    • Орган за издаване на сертификати (CA) с шаблон на сертификат за удостоверяване на влизане в системата чрез използване на 2048-битови ключове RSA:

  • Потребителска машина с 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#

Ключът се генерира в слот 9А (удостоверяване).

pivy-tool -a rsa2048 generate 9A

Note

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

Потребителският ПИН код може да бъде зададен и с -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: Подпишете CSR#

Преместете файла 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, като използвате „опции за влизане“.