使用活动目录登录客户端#
本文档介绍如何使用 Nitrokey 3 的 PIV 应用程序通过 Active Directory 进行智能卡登录。
在未来,这种手动配置可能会通过Windows MiniDriver自动进行。
警告
Nitrokey 3 的 PIV 应用程序目前被认为是不稳定的,在稳定固件版本中不可用。要获得该功能,需要安装测试固件。随后的固件更新可能会导致数据和加密密钥丢失。更多信息请参阅`固件更新文档</nitrokey3/windows/firmware-update.html#firmware-release-types>`__。
先决条件#
设置要求对运行 Active Directory 目录服务 (ADDS) 和 Active Directory 证书服务 (ADCS) 的计算机具有管理访问权限。在客户机上,只需访问用于登录的相应用户账户。
- Windows 服务器(支持的版本包括 Windows Server 2016、2019 和 2022 的所有版本)
已安装并配置 ADDS 角色。
- 已安装 ADCS 角色,Enterprise-CA 并配置了根证书。
每个域控制器 (DC) 都必须有*域控制器* 、域控制器验证 和*Kerberos 验证* 证书。
如果有客户离开公司网络,请确保已发布的完整和 delta 证书吊销列表 (CRL) 可从外部网络检索到。
- Windows 客户端(支持的版本有 Windows 10、11,版本为*Professional* 和*Enterprise*)
客户端必须是 Active Directory (AD) 域的域成员。
带有 PIV 应用程序的 Nitrokey 3。
配置智能卡登录,以便与 Active Directory (AD) 一起使用#
智能卡登录需要域证书颁发机构(CA)的证书模板。该模板定义了用户证书的值和限制。它用于在配置 Nitrokey 时签署证书请求(CSR)。
签署智能卡登录证书请求需要在证书颁发机构创建证书模板。
从命令行、PowerShell 或运行中,键入``certtmpl.msc`` 并按 Enter。
在详细信息窗格中选择模板**Smartcard Logon** 。
在菜单栏中单击**操作 → 所有任务 → 复制模板** 。
根据上述选项卡在模板上进行以下设置。
- 兼容性
禁用**显示产生的更改**
将**Certificate Authority** 和**Certificate recipient** 设置为域中最早使用智能卡登录的客户端。
重要
如果要使用椭圆曲线 (EC) 密钥,客户机的版本必须不高于 Windows Server 2008 和 Windows Vista。
- 一般情况
设置**模板显示名称** 。
设置**有效期** 和**续展期** 。
- 请求处理
设置**签名和智能卡登录** 的目的。
- 加密技术
设置提供程序类别**Key Storage Provider** 。
设置算法名称和最小密钥大小。
重要
Microsoft 建议使用密钥长度为``2048`` 位的 RSA 算法。如果选择使用 Eliptic Curve (EC) 密钥,则需要在客户端计算机上进行额外的更改。
- 科目名称
在请求** 中设置**供应。
使用**OK** 确认模板创建。
创建证书模板后,必须签发模板供客户使用。
从命令行、PowerShell 或运行中,键入``certsrv.msc`` 并按 Enter。
在导航窗格中展开证书颁发机构 (CA),并导航至**Certificate Templates** 。
在菜单栏中单击**操作 → 新建 → 签发证书模板** 。
选择要签发的证书模板,并通过**OK** 确认。
使用 Active Directory 为智能卡登录提供 Nitrokey 3#
智能卡登录需要在 Active Directory 中为用户配置 Nitrokey。该配置包含私钥和证书生成请求(CSR)。然后将证书写入 Nitrokey。
警告
在执行以下步骤之前,请确保要用于智能卡登录的 Active Directory 用户账户已经存在。证书创建时间早于用户账户创建时间将导致登录失败。
重要
如果之前没有使用过 Nitrokey 上的 PIV 应用程序,请先使用``nitropy nk3 piv init`` 进行初始化。
使用下面的命令生成私钥并将 CSR 写入文件。
nitropy nk3 piv generate-key --key 9A --algo <algorithm> --subject-name <subject-name> --subject-alt-name-upn <subject-alternative-name> --out-file <file>
<algorithm>
的值是使用的算法及其密钥长度,例如``rsa2048``。<subject-name>
和``<subject-alternative-name>`` 的值通常与活动目录用户账户的``commonName`` 和``userPrincipalName`` 属性相对应。用下面的命令在域的证书颁发机构 (CA) 上签署 CSR。
certreq -attrib CertificateTemplate:<template-name> -submit <file>
<template-name>
的值是用于智能卡登录的证书模板名称。<file>
的值是证书演唱请求文件。用下面的命令将签名证书写入 Nitrokey。
nitropy nk3 piv write-certificate --format PEM --path <file>
<file>
的值是证书文件。
撤销智能卡登录,以便与 Active Directory (AD) 一起使用#
已签发的用户登录证书列在 Active Directory 证书服务 (ADCS) 中。从 ADCS 中可以撤销证书,并将其添加到配置的证书撤销列表(CRL)中。这在 Nitrokey 丢失或损坏时是必需的。
重要
强烈建议不要在未撤销证书的情况下留下未使用的用户证书。
备注
可以暂时吊销证书,理由是*Certificate Hold* 。这种撤销可以恢复,因此不是永久性的。
从命令行、PowerShell 或运行中,键入``certsrv.msc`` 并按 Enter。
在导航窗格中展开证书颁发机构 (CA),并导航至**Issued Certificates** 。
在详细窗格中选择要撤销的用户证书。
在菜单栏中单击**操作 → 所有任务 → 注销证书** 。
指定撤销原因、日期和时间,并通过**Yes** 进行确认。
在导航窗格中导航至**已撤销证书** 。
在菜单栏中单击**操作 → 所有任务 → 发布** 。
选择要发布的撤销列表,并通过**OK** 确认。
备注
在每次智能卡登录尝试中,Windows 都会检查智能卡出示的证书是否列在证书吊销列表(CRL)中。如果在证书吊销列表中发现该证书,则拒绝登录。每个 CRL 都包含一个使其过期的有效期。Windows 会缓存获取的 CRL,并在 CRL 即将过期时更新它们。因此,证书吊销不会立即发生,而是取决于客户端所拥有的证书废止列表的过期时间。
将用户智能卡证书导入个人证书存储区#
存储在 Nitrokey 上的用户证书可以导入到用户的个人证书存储空间。在某些情况下,这是必要的程序。
确保您已登录证书对应的用户账户。
从命令行、PowerShell 或运行中,键入``certsrv.msc`` 并按 Enter。
在导航窗格中展开**个人** 密钥存储,并导航至**证书** 。
在菜单栏中单击**操作 → 所有任务 → 导入** 。
按照导入向导操作,并按要求提供用户证书文件。
导入完成后,检查导入证书的详细信息窗格。如果 Nitrokey 已连接,证书属性应显示*You have a private key that corresponds to this certificate(你有一个与此证书对应的私钥)。* 表明 Nitrokey 上的私钥可以被识别。
确保您已登录证书对应的用户账户。
打开 PowerShell。
Change to the personal certficate store of the user with
Set-Location -Path cert:\CurrentUser\My
.使用``Import-Certificate -Filepath ‘<path>’`` 将证书导入存储区,用证书文件路径替换``<path>``。