本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用智能卡进行身份验证
Windows 和 Linux WorkSpaces 上 WorkSpaces 流协议 (WSP) 捆绑包允许使用通用访问卡 (CAC)
亚马逊 WorkSpaces 两者都支持使用智能卡会话前认证和会话中身份验证. 会话前身份验证是指在用户登录他们的智能卡时执行的智能卡身份验证 WorkSpaces. 会话中身份验证是指登录后执行的身份验证。
例如,用户可以在使用 Web 浏览器和应用程序时使用智能卡进行会话中身份验证。他们还可以使用智能卡执行需要管理权限的操作。例如,如果用户在其 Linux 上拥有管理权限 WorkSpace,他们可以在运行时使用智能卡进行身份验证sudo
和sudo -i
命令。
要求
-
会话前身份验证需要一个 Active Directory 连接器(AD Connector)目录。AD Connector 使用基于证书的相互传输层安全 (双向 TLS) 身份验证,使用基于硬件或软件的智能卡证书对 Active Directory 的用户进行身份验证。有关如何配置 AD Connector 和本地目录的更多信息,请参阅目录配置.
-
在 Windows 或 Linux 上使用智能卡 WorkSpace,用户必须使用亚马逊 WorkSpaces Windows 客户端 3.1.1 版或更高版本或 WorkSpaces macOS 客户端 3.1.5 版或更高版本。有关在 Windows 和 macOS 客户端中使用智能卡的更多信息,请参阅智能卡Support在亚马逊 WorkSpaces 用户指南.
-
根 CA 和智能卡证书必须满足某些要求。有关更多信息,请参阅在 AD Connector 中启用 MTLS 身份验证以用于智能卡在Amazon Directory Service管理指南和证书要求
在微软文档中。 除了这些要求外,还使用用户证书向亚马逊进行智能卡身份验证 WorkSpaces 必须包含以下属性:
-
AD 用户的 userPrincipalName (UPN) 在 subjectAltName 证书的 (SAN) 字段。我们建议为用户的默认 UPN 颁发智能卡证书。
-
客户端身份验证 (1.3.6.1.5.5.7.3.2) 扩展密钥用法 (EKU) 属性。
-
智能卡登录 (1.3.6.1.4.1.311.20.2.2) EKU 属性。
-
-
对于会话前身份验证,证书吊销检查需要在线证书状态协议(OCSP)。对于会话中身份验证,建议使用 OCSP,但不是必需的。
限制
-
仅 WorkSpaces 目前支持 Windows 客户端应用程序版本 3.1.1 或更高版本以及 macOS 客户端应用程序 3.1.5 或更高版本进行智能卡身份验证。
-
这些区域有: WorkSpaces Windows 客户端应用程序 3.1.1 或更高版本仅在客户端在 64 位版本的 Windows 上运行时才支持智能卡。
-
Ubuntu WorkSpaces 目前不支持智能卡身份验证。
-
目前仅支持 AD Connector 目录进行智能卡身份验证。
-
会话中身份验证在所有支持 WSP 的区域中可用。以下区域提供会话前身份验证:
-
亚太区域(悉尼)
-
亚太区域(东京)
-
欧洲(爱尔兰)区域
-
Amazon GovCloud (US-West)区域
-
美国东部(弗吉尼亚州北部)区域
-
美国西部(俄勒冈州)区域
-
-
用于 Linux 或 Windows 上的会话中身份验证和会话前身份验证 WorkSpaces,目前一次只允许使用一张智能卡。
-
对于会话前身份验证,目前不支持在同一目录上同时启用智能卡身份验证和用户名和密码身份验证。
-
目前仅支持 CAC 和 PIV 卡。其他类型的基于硬件或软件的智能卡也可能适用,但它们尚未经过与WSP一起使用的全面测试。
-
在 Windows 或 Linux 期间使用智能卡解锁屏幕 WorkSpace 目前不支持会话。要在 Windows 上解决此问题 WorkSpaces,请参阅检测 Windows 锁屏并断开会话连接. 要在 Linux 上解决此问题 WorkSpaces,请参阅在 Linux 上禁用锁屏功能 WorkSpaces.
目录配置
要启用智能卡身份验证,必须按以下方式配置 AD Connector 目录和本地目录。
AD Connector t 目录配置
在开始之前,请确保您的 AD Connector 目录已按照中的说明进行设置AD Connector在Amazon Directory Service管理指南. 特别是,请确保您已在防火墙中打开了必要的端口。
要完成 AD Connector 目录的配置,请遵循中的说明在 AD Connector 中启用 MTLS 身份验证以用于智能卡在Amazon Directory Service管理指南.
本地目录配置
除了配置 AD Connector 目录外,您还必须确保为本地目录颁发给域控制器的证书设置了 “KDC 身份验证” 扩展密钥用法 (EKU)。为此,请使用 Active Directory 域服务 (AD DS) 默认 Kerberos 身份验证证书模板。请勿使用域控制器证书模板或域控制器身份验证证书模板,因为这些模板不包含智能卡身份验证的必要设置。
为 Windows 启用智能卡 WorkSpaces
有关如何在 Windows 上启用智能卡身份验证的一般指南,请参阅使用第三方证书颁发机构启用智能卡登录的指南
检测 Windows 锁屏并断开会话连接
允许用户解锁 Windows WorkSpaces 在屏幕锁定时启用智能卡会话前身份验证,则可以在用户会话中启用 Windows 锁屏检测。当检测到 Windows 锁屏时, WorkSpace 会话已断开连接,用户可以从 WorkSpaces 客户使用他们的智能卡。
使用组策略设置,可以在检测到 Windows 锁屏时启用断开会话连接。有关更多信息,请参阅 启用或禁用 WSP 的屏幕锁定时断开会话连接。
启用会话中或会话前身份验证
默认情况下,Windows WorkSpaces 未启用支持使用智能卡进行会话前或会话中身份验证。如果需要,可以为 Windows 启用会话中和会话前身份验证 WorkSpaces 通过使用组策略设置。有关更多信息,请参阅 启用或禁用 WSP 的智能卡重定向。
要使用会话前身份验证,除了更新组策略设置外,还必须通过 AD Connector 目录设置启用会话前身份验证。有关更多信息,请遵循中的说明在 AD Connector 中启用 MTLS 身份验证以用于智能卡在Amazon Directory Service管理指南.
使用户能够在浏览器中使用智能卡
如果您的用户使用 Chrome 作为浏览器,则无需进行特殊配置即可使用智能卡。
如果你的用户使用 Firefox 作为他们的浏览器,你可以通过组策略让你的用户在 Firefox 中使用智能卡。您可以使用此Firefox 组策略模板
例如,您可以安装 64 位版本的OpenSC
是你想用来标识 PKCS #11 的任何值,比如NAME_OF_DEVICE
OpenSC
,以及其中
是 PKCS #11 模块的路径。此路径应指向扩展名为 .DLL 的库,例如PATH_TO_LIBRARY_FOR_DEVICE
C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll
.
Software\Policies\Mozilla\Firefox\SecurityDevices\
NAME_OF_DEVICE
=PATH_TO_LIBRARY_FOR_DEVICE
如果你使用 OpenSC,你也可以加载 OpenSCpkcs11
运行以下命令将模块导入 Firefoxpkcs11-register.exe
程序。要运行此程序,请双击位于以下位置的文件C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe
,或者打开命令提示符窗口并运行以下命令:
"C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe"
为了验证 OpenSC 是否pkcs11
模块已加载到 Firefox 中,请执行以下操作:
-
如果 Firefox 已经在运行,请将其关闭。
-
打开 Firefox。选择菜单按钮
在右上角,然后选择选项.
-
在关于:首选项页面,在左侧导航窗格中,选择隐私与安全.
-
下面Certificates,选择安全设备.
-
在Device对话框,你应该看到OpenSC 智能卡框架 (0.21)在左侧导航栏中,当你选择它时,它应该有以下值:
模块:
OpenSC smartcard framework (0.21)
Path (路径):
C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll
问题排查
有关对智能卡进行故障排除的信息,请参阅证书和配置问题
一些可能导致问题的常见问题:
-
插槽到证书的映射不正确。
-
智能卡上有多个可以匹配用户的证书。证书使用以下条件进行匹配:
-
证书的根 CA。
-
这些区域有:
<KU>
和<EKU>
证书的字段。 -
证书主题中的 UPN。
-
-
拥有多个证书
<EKU>msScLogin
在他们的密钥使用中。
通常,最好只有一个映射到智能卡中第一个插槽的用于智能卡身份验证的证书。
用于管理智能卡上的证书和密钥(例如删除或重新映射证书和密钥)的工具可能因制造商而异。有关更多信息,请参阅智能卡制造商提供的文档。
为 Linux 启用智能卡 WorkSpaces
Linux的 WorkSpaces 上 WorkSpaces 流协议 (WSP) 捆绑包仅在Amazon GovCloud 此时为(美国西部)区域。
Linux的 WorkSpaces 在 WSP 上,目前具有以下限制:
-
不支持剪贴板、音频输入、视频输入和时区重定向。
-
不支持多台显示器。
-
您必须使用 WorkSpaces 连接到 Linux 的 Windows 客户端应用程序 WorkSpaces 在 WSP 上。
在 Linux 上启用智能卡的使用 WorkSpaces,你需要在中包含 PEM 格式的根 CA 证书文件 WorkSpace 镜像。
获取根 CA 证书
您可以通过多种方式获取根 CA 证书:
-
您可以使用由第三方证书颁发机构运营的根 CA 证书。
-
您可以使用 Web 注册网站导出自己的根 CA 证书,该网站是
http://
要么ip_address
/certsrvhttp://
,其中fqdn
/certsrv
和ip_address
是根认证 CA 服务器的 IP 地址和完全限定域名(FQDN)。有关使用 Web 注册网站的更多信息,请参阅如何导出根证书颁发机构证书fqdn
在微软文档中。 -
您可以使用以下步骤从运行 Active Directory 证书服务 (AD CS) 的根 CA 认证服务器导出根 CA 证书。有关安装 AD CS 的信息,请参见安装证书颁发机构
在微软文档中。 -
使用管理员帐户登录根 CA 服务器。
-
从窗户看启动菜单,打开命令提示符窗口(启动>Windows 系统>命令提示符)。
-
使用以下命令将根 CA 证书导出到新文件中,其中
是新文件的名称:rootca
.cercertutil -ca.cert
rootca
.cer有关运行 certutil 的更多信息,请参阅当然
在微软文档中。 -
使用以下 OpenSSL 命令将导出的根 CA 证书从 DER 格式转换为 PEM 格式,其中
rootca
是证书的名称。有关 OpenSSL 的更多信息,请参阅www.openssl.org. openssl x509 -inform der -in
rootca
.cer -out /tmp/rootca
.pem
-
将根 CA 证书添加到 Linux WorkSpaces
为了帮助您启用智能卡,我们添加了enable_smartcard
脚本到我们的亚马逊 Linux WSP 捆绑包中。此脚本将执行以下操作:
-
将您的根 CA 证书导入到网络安全服务 (NSS)
数据库。 -
安装
pam_pkcs11
用于可插拔身份验证模块 (PAM) 身份验证的模块。 -
执行默认配置,包括启用
pkinit
期间 WorkSpace 预置。
以下步骤介绍如何使用enable_smartcard
脚本将您的根 CA 证书添加到 Linux WorkSpaces 并为您的 Linux 启用智能卡 WorkSpaces.
-
创建新的 Linux WorkSpace 启用了 WSP 协议。启动时 WorkSpace 在亚马逊 WorkSpaces 控制台,选择捆绑包页面,一定要选择WSP获取协议,然后选择一个 Amazon Linux 2 公共捆绑包。
-
在新的 WorkSpace,以 root 身份运行以下命令,其中
是 PEM 格式的根 CA 证书文件的路径。pem-path
/usr/lib/skylight/enable_smartcard --ca-cert
pem-path
注意 Linux的 WorkSpaces 假设智能卡上的证书是为用户的默认用户主体名称 (UPN) 颁发的,例如
,其中sAMAccountName
@domain
是一个完全限定域名(FQDN)。domain
要使用备用 UPN 后缀,
run /usr/lib/skylight/enable_smartcard --help
有关更多信息。备用 UPN 后缀的映射对于每个用户都是唯一的。因此,该映射必须在每个用户的上单独执行 WorkSpace. -
(可选)默认情况下,所有服务都允许在 Linux 上使用智能卡身份验证 WorkSpaces. 要将智能卡身份验证限制为仅限特定服务,必须编辑
/etc/pam.d/system-auth
. 取消注释auth
line forpam_succeed_if.so
并根据需要编辑服务列表。之后
auth
line 已取消注释,要允许服务使用智能卡身份验证,必须将其添加到列表中。要使服务仅使用密码身份验证,必须从列表中将其删除。 -
(可选)目前不支持使用智能卡解锁屏幕。在 Linux 上禁用锁屏功能 WorkSpaces,创建一个名为的文件
/usr/share/glib-2.0/schemas/10_screensaver.gschema.override
其内容如下:[org.mate.screensaver] lock-enabled=false
创建此文件后,运行以下命令:
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
-
对 WorkSpace. 例如,您可能希望将系统范围的Policy 添加到允许用户在 Firefox 中使用智能卡. (Chrome 用户必须自己在客户端上启用智能卡。 有关更多信息,请参阅智能卡Support在亚马逊 WorkSpaces 用户指南。)
-
创建自定义 WorkSpace 镜像和捆绑包来自 的 WorkSpace.
-
使用新的自定义包启动 WorkSpaces 为您的用户服务。
允许用户在 Firefox 中使用智能卡
您可以允许您的用户在 Firefox 中使用智能卡,方法是添加一个 SecurityDevices Linux 的策略 WorkSpace 镜像。有关向 Firefox 添加系统范围的更多信息,请参阅Mozilla Polic
-
在 WorkSpace 你用来创建你的 WorkSpace image,创建名为的新文件
policies.json
在/usr/lib64/firefox/distribution/
. -
在 JSON 文件中,添加以下内容 SecurityDevices Policy,其中
是你想用什么值来识别NAME_OF_DEVICE
pkcs
模块。例如,您可以使用以下值之一"OpenSC"
:{ "policies": { "SecurityDevices": { "
NAME_OF_DEVICE
": "/usr/lib64/opensc-pkcs11.so" } } }
问题排查
为了进行故障排除,我们建议添加pkcs11-tools
实用工具。此实用程序允许您执行以下操作:
-
列出每张智能卡。
-
列出每张智能卡上的插槽。
-
列出每张智能卡上的证书。
一些可能导致问题的常见问题:
-
插槽到证书的映射不正确。
-
智能卡上有多个可以匹配用户的证书。证书使用以下条件进行匹配:
-
证书的根 CA。
-
这些区域有:
<KU>
和<EKU>
证书的字段。 -
证书主题中的 UPN。
-
-
拥有多个证书
<EKU>msScLogin
在他们的密钥使用中。
通常,最好只有一个映射到智能卡中第一个插槽的用于智能卡身份验证的证书。
用于管理智能卡上的证书和密钥(例如删除或重新映射证书和密钥)的工具可能因制造商而异。您可以用来处理智能卡的其他工具包括:
-
opensc-explorer
-
opensc-tool
-
pkcs11_inspect
-
pkcs11_listcerts
-
pkcs15-tool
启用调试日志记录
要排除的故障pam_pkcs11
和pam-krb5
配置,你可以启用调试日志。
-
在
/etc/pam.d/system-auth-ac
文件,编辑auth
行动并更改nodebug
的参数pam_pksc11.so
到debug
. -
在
/etc/pam_pkcs11/pam_pkcs11.conf
文件,更改debug = false;
到debug = true;
. 这些区域有:debug
选项单独应用于每个映射器模块,因此您可能需要直接在映射器模块下对其进行更改pam_pkcs11
部分以及相应的映射器部分之下(默认情况下,这是mapper generic
)。 -
在
/etc/pam.d/system-auth-ac
文件,编辑auth
操作并添加debug
或者debug_sensitive
参数pam_krb5.so
.
启用调试日志记录后,系统会打印出来pam_pkcs11
直接在活动终端中调试消息。来自的消息pam_krb5
已登录/var/log/secure
.
要检查智能卡证书映射到哪个用户名,请使用以下命令pklogin_finder
命令:
sudo pklogin_finder debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf
系统给予提示时,输入智能卡 PIN。pklogin_finder
Outputstdout
智能卡证书上的用户名,格式为
. 此用户名应匹配 WorkSpace 用户名。NETBIOS
\username
在 Active Directory 域服务 (AD DS) 中,NetBIOS 域名是 Windows 2000 之前的域名。通常(但并非总是),NetBIOS 域名是域名系统 (DNS) 域名的子域。例如,如果 DNS 域名是example.com
,NetBIOS 域名通常是EXAMPLE
. 如果 DNS 域名是corp.example.com
,NetBIOS 域名通常是CORP
.
例如,对于用户mmajor
域中corp.example.com
,输出来自pklogin_finder
是CORP\mmajor
.
如果你收到消息"ERROR:pam_pkcs11.c:504: verify_certificate()
failed"
,此消息表明pam_pkcs11
已在智能卡上找到符合用户名标准但未链接到机器识别的根 CA 证书的证书。当这种情况发生时,pam_pkcs11
输出上述消息,然后尝试下一个证书。只有在找到既与用户名匹配又链接到公认的根 CA 证书的证书时,它才允许进行身份验证。
要排除的故障pam_krb5
配置,您可以手动调用kinit
使用以下命令在调试模式下:
KRB5_TRACE=/dev/stdout kinit -V
此命令应成功获得 Kerberos 门票授予票证 (TGT)。如果失败,请尝试在命令中显式添加正确的 Kerberos 主体名称。例如,对于用户mmajor
域中corp.example.com
,使用这个命令:
KRB5_TRACE=/dev/stdout kinit -V mmajor
如果此命令成功,则问题很可能出在映射中 WorkSpace 用户名改为 Kerberos 主要名称。Check[appdefaults]/pam/mappings
部分中的部分/etc/krb5.conf
file。
如果这个命令不成功,而是基于密码kinit
命令成功了,请检查pkinit_
中的相关配置/etc/krb5.conf
file。例如,如果智能卡包含多个证书,您可能需要更改pkinit_cert_match
.