使用PIV智能卡认证的Windows登录#

本文档介绍如何使用密钥和证书手动配置 Nitrokey 3 for Windows 智能卡登录的 PIV 功能。

在未来,这种手动配置可能会通过Windows MiniDriver自动进行。

警告

Nitrokey 3 的 PIV 功能目前被认为是不稳定的,在稳定版固件中不可用。要获得该功能,需要安装测试固件。后续固件更新可能会导致数据和加密密钥丢失。更多信息请参阅`固件更新文档<firmware-update.html#firmware-release-types>`__。

先决条件#

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: 签署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 设备上,并打开证书管理器 (对于用户,而不是机器) :

打开 "管理用户证书控制面板"

导入证书:

在行动、所有任务中,你可以找到导入行动

完成这些工作后,退出。通过使用 “登录选项 “用硝基钥匙登录