Logowanie w systemie Windows z uwierzytelnianiem za pomocą karty inteligentnej PIV#

W tym dokumencie wyjaśniono, jak ręcznie udostępnić funkcję PIV logowania do karty inteligentnej Nitrokey 3 for Windows za pomocą klucza i certyfikatu.

W przyszłości ten ręczny provisioning może być zautomatyzowany poprzez Windows MiniDriver.

Ostrzeżenie

Funkcja PIV Nitrokey 3 jest obecnie uważana za niestabilną i nie jest dostępna w stabilnych wersjach oprogramowania układowego. Aby uzyskać tę funkcjonalność, wymagane jest zainstalowanie testowego oprogramowania układowego. Kolejne aktualizacje oprogramowania sprzętowego mogą prowadzić do utraty danych i kluczy kryptograficznych. Więcej informacji można znaleźć na stronie w dokumentacji aktualizacji oprogramowania sprzętowego.

Wymagania wstępne#

  • Serwer Windows z:

    • Active Directory (instrukcje)

    • Urząd certyfikacji (CA), z szablonem certyfikatu do uwierzytelniania logowania z wykorzystaniem kluczy RSA 2048 bit:

  • Maszyna użytkownika Windows dołączona do domeny serwera

  • A Nitrokey 3 z PIV.

  • System Linux z zainstalowanymi pivy i PCSCD (sudo apt install pcscd), aby zapewnić Nitrokey (krok 1, 2 i 4). Zamiast oddzielnego systemu Linux można zainstalować WSL w systemie Windows. Należy pamiętać, że trzeba wirtualnie podłączyć Nitrokey do WSL i uruchomić PCSCD (sudo service start pcscd) przed użyciem pivy.

1: Wygeneruj klucz na Nitrokey#

Klucz jest generowany w gnieździe 9A (uwierzytelnianie).

pivy-tool -a rsa2048 generate 9A

Informacja

Jeśli klucz administracyjny nie jest domyślny, można go określić za pomocą -A 3des -K 010203040506070801020304050607080102030405060708 . Argumentem do -A może być również aes256, a argumentem do -K jest klucz w systemie szesnastkowym.

PIN użytkownika może być również określony za pomocą -P 123456, lub -P <value>, jeśli nie jest domyślny. Jeśli -P nie zostanie podany, zostanie o niego poproszony po wygenerowaniu klucza.

Dotyczy to wszystkich komend pivy-tool.

Ten krok może zająć kilka minut dla kluczy RSA, ponieważ czysta implementacja oprogramowania jest powolna.

Oczekiwane wyjście:

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

2: Wygeneruj żądanie podpisania certyfikatu (CSR)#

Ten krok generuje certyfikat dla klucza w slocie uwierzytelniania. pivy-tool -n 'Nitro Test' -u "nitro@test.nitrokey.com" -T user-auth req-cert 9A

Nitro Test nazwa użytkownika i nitro@test.nitrokey.com adres e-mail muszą być zmienione na własne wartości.

Spodziewane wyjście:

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

Skopiuj żądanie podpisania certyfikatu do pliku request.csr

3: Podpisz CSR#

Przenieś plik request.csr z poprzedniego kroku na serwer, na którym znajduje się urząd certyfikacji. Zweryfikuj w konsoli szablonów certyfikatów (certtmpl.msc ), czy szablon dla użytkowników może przyjąć nazwy podmiotów z żądania:

W konsoli szablonu certyfikatu, w parametrze dla szablonu certyfikatu uwierzytelniającego, w zakładce "subject name" włącz "supply in request".

Otwórz PowerShell i podpisz żądanie podpisania certyfikatu za pomocą certreq.exe -attrib CertificateTemplate:Nitrotest -submit request.csr.

Spowoduje to otwarcie graficznego interfejsu użytkownika, w którym można wybrać odpowiedni urząd certyfikacji, jeśli na tym serwerze jest ich wiele. Zapisz certyfikat jako certificate.crt

4: Zapisz certyfikat na Nitrokey#

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

5: Importuj certyfikat na konto użytkownika#

Przenieś certificate.der na urządzenie Windows użytkownika i otwórz menedżera certyfikatów (Dla użytkownika, nie maszyny):

Otwórz "panel sterowania certyfikatem użytkownika zarządzaj"

Importuj certyfikat:

W akcjach, wszystkich zadaniach, można znaleźć akcję importu

Po wykonaniu tych czynności należy się wylogować. Zaloguj się za pomocą Nitrokey, korzystając z „opcji logowania”