使用智能卡進行身份驗證 - Amazon WorkSpaces

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用智能卡進行身份驗證

WorkSpaces 上的 Windows 和 Linux WorkSpaces 流協議 (WSP) 捆綁包允許使用通用訪問卡 (CAC)個人身份驗證智能卡進行身份驗證。

Amazon WorkSpaces 支持將智能卡用於會前身份驗證會話中身份驗證。會前身份驗證是指用户登錄其 WorkSpace 時執行的智能卡身份驗證。會話中身份驗證是指登錄後執行的身份驗證。

例如,用户可以在使用 Web 瀏覽器和應用程序時使用智能卡進行會話內身份驗證。他們還可以將智能卡用於需要管理權限的操作。例如,如果用户對其 Linux WorkSpace 具有管理權限,則他們可以使用智能卡在運行sudosudo -i命令。

要求

  • 會話前身份驗證需要活動目錄連接器(AD Connector)目錄。AD Connector 使用基於證書的相互傳輸層安全性(相互 TLS)身份驗證,使用基於硬件或軟件的智能卡證書對 Active Directory 的用户進行身份驗證。如需如何設定 AD Connector 和您的本地目錄的詳細資訊,請參目錄配置

  • 若要將智能卡與 Windows 或 Linux WorkSpaces 配合使用,用户必須使用 Amazon WorkSpaces 客户端 3.1.1 或更高版本或更高版本或 WorkSpace macOS 客户端版本 3.1.5 或更高版本。有關將智能卡與 Windows 和 macOS 客户端結合使用的詳細信息,請參閲智慧卡 Support中的Amazon WorkSpaces 使用者指南

  • 根 CA 和智能卡證書必須滿足特定要求。如需詳細資訊,請參閱「」在 AD Connector 中啟用 MTLS 身份驗證以便與智能卡一起使用中的AWS Directory Service管理指南憑證需求位於微軟檔案中。

    除了這些要求之外,用於 Amazon WorkSpaces 智能卡身份驗證的用户證書必須包含以下屬性:

    • 憑證主體名稱 (SAN) 字段中 AD 用户的 userPrincipalName (UPN)。我們建議為用户的默認 UPN 頒發智能卡證書。

    • 客户端身份驗證 (1.3.6.1.5.5.7.3.2) 擴展密鑰使用 (EKU) 屬性。

    • 智能卡登錄 (1.3.6.1.4.1.311.20.2.2) 伊大學屬性。

  • 對於會前身份驗證,憑證撤銷檢查需要聯機憑證狀態協定 (OCSP)。對於會話內身份驗證,建議使用 OCSP,但不是必需的。

限制

  • 智能卡身份驗證目前僅支持 WorkSpaces 客户端應用程序版本 3.1.1 或更高版本以及 macOS 客户端應用程序版本 3.1.5 或更高版本。

  • 僅當客户端在 64 位版本的 Windows 上運行時,WorkSpaces Windows 客户端應用程序 3.1.1 或更高版本才支持智能卡。

  • 智能卡身份驗證當前僅支持 AD Connector 目錄。

  • 在支援 WSP 的所有區域中使用會話中身份驗證。下列區域提供會前身份驗證:

    • Asia Pacific (Sydney) Region

    • 亞太區域 (東京)

    • 歐洲 (愛爾蘭) 區域

    • AWS GovCloud (US-West) 區域

    • US East (N. Virginia) Region

    • 美國西部區域 (奧勒岡)

  • 對於 Linux 或 Windows WorkSpaces 間上的會話內身份驗證和會話前身份驗證,當前一次只允許一個智能卡。

  • 對於會前身份驗證,當前不支持在同一目錄上同時啟用智能卡身份驗證以及用户名和密碼身份驗證。

  • 目前只支援 CAC 和 PIV 卡。其他類型的基於硬件或軟件的智能卡也可能正常工作,但它們尚未經過與 WSP 一起使用的完全測試。

  • 當前不支持在 Windows 或 Linux WorkSpace 會話期間使用智能卡解鎖屏幕。若要解決此問題的 Windows WorkSpaces,請參檢測 Windows 鎖定屏幕並斷開會話的連接。若要解決此問題的 Linux WorkSpaces,請參禁用 Linux WorkSpaces 上的鎖定屏幕

目錄配置

要啟用智能卡身份驗證,必須按以下方式配置 AD Connector 目錄和本地目錄。

AD Connector 目錄配置

開始之前,請確定您的 AD Connector 目錄已按照AD Connector 先決條件中的AWS Directory Service管理指南。特別是,請確保您已在防火牆中打開了必要的端口。

要完成 AD Connector 目錄的配置,請按照在 AD Connector 中啟用 MTLS 身份驗證以便與智能卡一起使用中的AWS Directory Service管理指南

本地目錄配置

除了配置 AD Connector 目錄外,還必須確保頒發給域控制器的內部部署目錄的證書具有「KDC 身份驗證」擴展密鑰用法 (EKU) 設置。若要執行此操作,請使用 Active Directory 網域服務 (AD DS) 默認 Kerberos 身份驗證憑證模板。請勿使用域控制器證書模板或域控制器身份驗證證書模板,因為這些模板不包含智能卡身份驗證所需的設置。

為 Windows WorkSpaces 啟用智能卡

有關如何在 Windows 上啟用智能卡身份驗證的一般指南,請參閲啟用智能卡通過第三方證書頒發機構登錄的指南位於微軟檔案中。

檢測 Windows 鎖定屏幕並斷開會話的連接

若要允許用户解鎖屏幕鎖定時啟用智能卡會話前身份驗證的 Windows WorkSpaces,您可以在用户的會話中啟用 Windows 鎖屏檢測。當檢測到 Windows 鎖定屏幕時,Workspace 會話將斷開連接,並且用户可以使用其智能卡從 WorkSpace 客户端重新連接。

使用組策略設置檢測到 Windows 鎖定屏幕時,您可以啟用斷開會話連接。如需詳細資訊,請參閱 啟用或禁用 WSP 屏幕鎖定斷開連接會話

啟用會話內身份驗證或會前身份驗證

默認情況下,Windows WorkSpaces 未啟用以支持使用智能卡進行會前身份驗證或會話期間身份驗證。如果需要,您可以使用組策略設置為 Windows WorkSpaces 啟用會話內身份驗證和會前身份驗證。如需詳細資訊,請參閱 啟用或停用 WSP 的智慧卡重定向

要使用會前身份驗證,除了更新組策略設置外,還必須通過 AD Connector 目錄設置啟用會前身份驗證。如需詳細資訊,請按照在 AD Connector 中啟用 MTLS 身份驗證,以便在智能卡中使用中的AWS Directory Service管理指南

允許用户在瀏覽器中使用智能卡

如果您的用户使用 Chrome 作為瀏覽器,則無需特殊配置即可使用智能卡。

如果您的用户使用 Firefox 作為瀏覽器,您可以通過組策略讓用户在 Firefox 中使用智能卡。您可以將此Firefox 組政策範本在 GitHub 中。

例如,您可以安裝 64 位元版本的OpenSC以支持 PKCS #11,然後使用以下組策略設置,其中NAME_OF_DEVICE是您想要用於識別 PKCS #11 的任何值,例如OpenSC,其中PATH_TO_LIBRARY_FOR_DEVICE是 PKCS #11 模組的路徑。此路徑應指向具有 .DLL 擴展名的庫,例如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模塊中運行pkcs11-register.exe計劃。要運行此程序,請雙擊C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe或者開啟命令提示視窗並執行下列命令:

"C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe"

驗證 OpenSCpkcs11模塊已加載到 Firefox 中,請執行下列作業:

  1. 如果 Firefox 已在執行,請將其關閉。

  2. 開啟 Firefox。選擇菜單按鈕 
                                Firefox menu button
                            ,然後選擇選項

  3. 關於:首選項頁面上,在左側導覽窗格中,選擇隱私與安全

  4. 根據憑證,選擇安全設備

  5. 在 中裝置管理器對話框中,您應該看到OpenSC 式智能卡框架 (0.21),並且當您選擇它時,它應該具有以下值:

    模組OpenSC smartcard framework (0.21)

    路徑C:\Program Files\OpenSC Project\OpenSC\pkcs11\onepin-opensc-pkcs11.dll

疑難排解

如需智能卡疑難排解的詳細資訊,請參證書和配置問題位於微軟檔案中。

一些可能導致問題的常見問題:

  • 插槽到證書的映射不正確。

  • 智能卡上具有多個可與用户匹配的證書。憑證將使用下列準則進行匹配:

    • 證書的根 CA。

    • 所以此<KU><EKU>字段的證書。

    • 憑證主體中的 UPN。

  • 具有多個具有<EKU>msScLogin在他們的密鑰用法中。

通常,最好只有一個映射到智能卡中第一個插槽的智能卡身份驗證證書。

用於管理智能卡上的證書和密鑰的工具(例如刪除或重新映射證書和密鑰)可能是製造商特定的。如需詳細資訊,請參您智能卡製造商提供的文件。

為 Linux WorkSpaces 啟用智能卡

注意

工作空間上的 Linux WorkSpaces 流協議 (WSP) 捆綁包僅在AWSGovCloud (US-West) 區域。

WSP 上的 Linux WorkSpaces 域目前具有下列限制:

  • 不支持剪貼板、音頻輸入、視頻輸入和時區重定向。

  • 不支援多台顯示器。

  • 您必須使用 WorkSpaces Windows 客户端應用程序連接到 WSP 上的 Linux WorkSpaces。

若要在 Linux WorkSpaces 上啟用智能卡,您需要在 WorkSpace 映像中包含 PEM 格式的根 CA 證書文件。

獲取根 CA 憑證

您可以通過以下幾種方式獲取根 CA 證書:

  • 您可以使用第三方憑證頒發機構操作的根 CA 憑證。

  • 您可以使用 Web 註冊站點導出自己的根 CA 證書,該站點是http://ip_address/certsrv或者http://fqdn/certsrv,其中ip_addressfqdn是根憑證 CA 服務器的 IP 地址和完整網域名稱 (FQDN)。如需使用 Web 註冊站點的詳細資訊,請參如何導出根證書頒發機構證書位於微軟檔案中。

  • 您可以使用以下過程從運行活動目錄證書服務 (AD CS) 的根 CA 證書服務器導出根 CA 證書。如需安裝 AD CS 的詳細資訊,請參安裝憑證頒發機構位於微軟檔案中。

    1. 使用管理員帳户登錄到根 CA 服務器。

    2. 從 Windows 中啟動菜單中,開啟命令提示視窗 (啟動 >Windows 系統 >命令提示

    3. 使用下列命令,將根 CA 憑證導出至新文件,其中rootca.cer是新檔案的名稱:

      certutil -ca.cert rootca.cer

      如需有關執行 Certutil 的詳細資訊,請參西班牙位於微軟檔案中。

    4. 使用下列 OpenSSL 命令,將導出的根 CA 憑證從 DER 格式轉換為 PEM 格式,其中rootca是憑證名稱。如需 OpenSSL 的詳細資訊,請參www.openss.com

      openssl x509 -inform der -in rootca.cer -out /tmp/rootca.pem

若要將您的根 CA 憑證添加到您的 Linux WorkSpaces 域

為了幫助您啟用智能卡,我們添加了enable_smartcard腳本添加到我們的亞馬遜 WSP 軟件包。此指令碼會執行下列動作:

  • 將您的根 CA 憑證授權機構憑證導入網絡安全服務 (NSS)資料庫。

  • 安裝pam_pkcs11模塊進行可插拔身份驗證模塊 (PAM) 身份驗證。

  • 執行默認配置,其中包括啟用pkinit在 WorkSpace 置備期間。

下列程序解釋如何使用enable_smartcard腳本將根 CA 證書添加到您的 Linux WorkSpaces,併為您的 Linux WorkSpaces 啟用智能卡。

  1. 在啟用 WSP 協議的情況下創建一個新的 Linux WorkSpace。在亞馬遜 WorkSpace 控制台中啟動工作區時,請在選擇套件頁面上,請務必選擇WSP,然後選擇其中一個 Amazon Linux 2 公用軟件包。

  2. 在新 WorkSpace 上,以 root 用户身份執行下列命令,其中pem-path是 PEM 格式的根 CA 憑證文件路徑。

    /usr/lib/skylight/enable_smartcard --ca-cert pem-path
    注意

    Linux WorkSpaces 假定智能卡上的證書是為用户的默認用户主體名稱 (UPN) 頒發的,例如sAMAccountName@domain,其中domain是完整網域名稱 (FQDN)。

    若要使用替代 UPN 後綴,run /usr/lib/skylight/enable_smartcard --help以獲取詳細資訊。備用 UPN 後綴的映射對每個用户是唯一的。因此,必須在每個用户的 WorkSpace 上單獨執行該映射。

  3. (可選)默認情況下,所有服務都啟用在 Linux WorkSpaces 上使用智能卡身份驗證。要將智能卡身份驗證限製為僅限於特定服務,您必須編輯/etc/pam.d/system-auth。取消的註解authpam_succeed_if.so並根據需要編輯服務列表。

    之後auth行被取消註釋,要允許服務使用智能卡身份驗證,必須將其添加到列表中。若要使服務僅使用密碼身份驗證,您必須從列表中移除它。

  4. (可選)當前不支持使用智能卡解鎖屏幕。若要在 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/
  5. 對 WorkSpace 執行任何其他自定義設置。例如,您可能想要將系統範圍內的策略添加到允許用户在火狐瀏覽器中使用智能卡。Chrome 用户必須在其客户端上自己啟用智能卡。 如需詳細資訊,請參閱「」智慧卡 Support中的Amazon WorkSpaces 使用者指南。)

  6. 創建自定義 WorkSpace 映像和捆綁WorkSpace

  7. 使用新的自定義捆綁包為您的用户啟動 WorkSpaces。

允許用户在 Firefox 中使用智能卡

您可以通過在 Linux WorkSpace 映像中添加安全設備策略,使用户在 Firefox 中使用智能卡。如需新增系統級別策略至 Firefox 的詳細資訊,請參Mozilla 政策範本(在 GitHub 上)。

  1. 在用於創建 WorkSpace 映像的 WorWorkSpace 上,創建一個名為policies.json/usr/lib64/firefox/distribution/

  2. 在 JSON 文件中,添加下列安全設備策略,其中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_pkcs11pam-krb5配置,您可以啟用調試日誌記錄。

  1. 在 中/etc/pam.d/system-auth-ac檔案中,編輯auth操作並更改nodebug參數pam_pksc11.sodebug

  2. 在 中/etc/pam_pkcs11/pam_pkcs11.conf檔案,更改debug = false;debug = true;。所以此debug選項單獨應用於每個映射器模塊,因此您可能需要直接在pam_pkcs11部分和相應的映射器部分(默認情況下,這是mapper generic

  3. 在 中/etc/pam.d/system-auth-ac檔案中,編輯auth操作並添加debugdebug_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上的輸出stdout表單中的智能卡證書上的用户名NETBIOS\username。此用户名應與 WorkSpace 用户名匹配。

在活動目錄網域服務 (AD DS) 中的 NetBIOS 網域名稱是 Windows 2000 之前的網域名稱。NetBIOS 網域名稱通常(但並非總是如此)是網域名稱系統 (DNS) 網域名稱的子網域名稱。例如,如果 DNS 域名為example.com,NetBIOS 域名通常為EXAMPLE。如果 DNS 網域名稱為corp.example.com,NetBIOS 域名通常為CORP

例如,針對使用者mmajor在域中corp.example.com,輸出來自pklogin_finderCORP\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 主體名稱的映射中。檢查[appdefaults]/pam/mappings區段中的/etc/krb5.conffile.

如果此命令沒有成功,但基於密碼kinit命令確實成功,請檢查pkinit_相關配置/etc/krb5.conffile. 例如,如果智能卡包含多個證書,則可能需要更改pkinit_cert_match