使用活动目录登录客户端#

本文档介绍如何使用 Nitrokey 3 的 PIV 应用程序通过 Active Directory 进行智能卡登录。

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

警告

Nitrokey 3 的 PIV 应用程序目前被认为是不稳定的,在稳定固件版本中不可用。要获得该功能,需要安装测试固件。随后的固件更新可能会导致数据和加密密钥丢失。更多信息请参阅`固件更新文档<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)。

  1. 签署智能卡登录证书请求需要在证书颁发机构创建证书模板。

    1. 从命令行、PowerShell 或运行中,键入``certtmpl.msc`` 并按 Enter。

    2. 在详细信息窗格中选择模板**Smartcard Logon** 。

    3. 在菜单栏中单击**操作 → 所有任务 → 复制模板** 。

    4. 根据上述选项卡在模板上进行以下设置。

      兼容性
      • 禁用**显示产生的更改**

      • 将**Certificate Authority** 和**Certificate recipient** 设置为域中最早使用智能卡登录的客户端。

        重要

        如果要使用椭圆曲线 (EC) 密钥,客户机的版本必须不高于 Windows Server 2008 和 Windows Vista。

      一般情况
      • 设置**模板显示名称** 。

      • 设置**有效期** 和**续展期** 。

      请求处理
      • 设置**签名和智能卡登录** 的目的。

      加密技术
      • 设置提供程序类别**Key Storage Provider** 。

      • 设置算法名称和最小密钥大小。

        重要

        Microsoft 建议使用密钥长度为``2048`` 位的 RSA 算法。如果选择使用 Eliptic Curve (EC) 密钥,则需要在客户端计算机上进行额外的更改。

      科目名称
      • 在请求** 中设置**供应。

    5. 使用**OK** 确认模板创建。

  2. 创建证书模板后,必须签发模板供客户使用。

    1. 从命令行、PowerShell 或运行中,键入``certsrv.msc`` 并按 Enter。

    2. 在导航窗格中展开证书颁发机构 (CA),并导航至**Certificate Templates** 。

    3. 在菜单栏中单击**操作 → 新建 → 签发证书模板** 。

    4. 选择要签发的证书模板,并通过**OK** 确认。

使用 Active Directory 为智能卡登录提供 Nitrokey 3#

智能卡登录需要在 Active Directory 中为用户配置 Nitrokey。该配置包含私钥和证书生成请求(CSR)。然后将证书写入 Nitrokey。

警告

在执行以下步骤之前,请确保要用于智能卡登录的 Active Directory 用户账户已经存在。证书创建时间早于用户账户创建时间将导致登录失败。

重要

如果之前没有使用过 Nitrokey 上的 PIV 应用程序,请先使用``nitropy nk3 piv init`` 进行初始化。

  1. 使用下面的命令生成私钥并将 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`` 属性相对应。

  2. 用下面的命令在域的证书颁发机构 (CA) 上签署 CSR。

    certreq -attrib CertificateTemplate:<template-name> -submit <file>
    

    <template-name> 的值是用于智能卡登录的证书模板名称。<file> 的值是证书演唱请求文件。

  3. 用下面的命令将签名证书写入 Nitrokey。

    nitropy nk3 piv write-certificate --format PEM --path <file>
    

    <file> 的值是证书文件。

撤销智能卡登录,以便与 Active Directory (AD) 一起使用#

已签发的用户登录证书列在 Active Directory 证书服务 (ADCS) 中。从 ADCS 中可以撤销证书,并将其添加到配置的证书撤销列表(CRL)中。这在 Nitrokey 丢失或损坏时是必需的。

重要

强烈建议不要在未撤销证书的情况下留下未使用的用户证书。

注解

可以暂时吊销证书,理由是*Certificate Hold* 。这种撤销可以恢复,因此不是永久性的。

  1. 从命令行、PowerShell 或运行中,键入``certsrv.msc`` 并按 Enter。

  2. 在导航窗格中展开证书颁发机构 (CA),并导航至**Issued Certificates** 。

  3. 在详细窗格中选择要撤销的用户证书。

  4. 在菜单栏中单击**操作 → 所有任务 → 注销证书** 。

  5. 指定撤销原因、日期和时间,并通过**Yes** 进行确认。

  6. 在导航窗格中导航至**已撤销证书** 。

  7. 在菜单栏中单击**操作 → 所有任务 → 发布** 。

  8. 选择要发布的撤销列表,并通过**OK** 确认。

注解

在每次智能卡登录尝试中,Windows 都会检查智能卡出示的证书是否列在证书吊销列表(CRL)中。如果在证书吊销列表中发现该证书,则拒绝登录。每个 CRL 都包含一个使其过期的有效期。Windows 会缓存获取的 CRL,并在 CRL 即将过期时更新它们。因此,证书吊销不会立即发生,而是取决于客户端所拥有的证书废止列表的过期时间。

将用户智能卡证书导入个人证书存储区#

存储在 Nitrokey 上的用户证书可以导入到用户的个人证书存储空间。在某些情况下,这是必要的程序。

  1. 确保您已登录证书对应的用户账户。

  2. 从命令行、PowerShell 或运行中,键入``certsrv.msc`` 并按 Enter。

  3. 在导航窗格中展开**个人** 密钥存储,并导航至**证书** 。

  4. 在菜单栏中单击**操作 → 所有任务 → 导入** 。

  5. 按照导入向导操作,并按要求提供用户证书文件。

  6. 导入完成后,检查导入证书的详细信息窗格。如果 Nitrokey 已连接,证书属性应显示*You have a private key that corresponds to this certificate(你有一个与此证书对应的私钥)。* 表明 Nitrokey 上的私钥可以被识别。