使用智慧卡進行驗證 - Amazon WorkSpaces

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

使用智慧卡進行驗證

Windows 和 Linux WorkSpaces WorkSpaces 串流通訊協定 (WSP) 套裝軟體允許使用通用存取卡 (CAC)個人身分驗證 (PIV) 智慧卡進行驗證。

Amazon WorkSpaces 支援使用智慧卡進行工作階段前身份驗證和工作階段身份驗證。工作階段前驗證是指使用者登入時所執行的智慧卡驗證。 WorkSpaces工作階段內驗證是指在登入後執行的驗證。

例如,使用者可以在使用 Web 瀏覽器和應用程式時,使用智慧卡進行工作階段內驗證。他們也可以將智慧卡用於進行需要管理許可的動作。例如,如果使用者在 Linux 上具有系統管理權限 WorkSpace,則可以在執行sudosudo -i指令時使用智慧卡來驗證自己。

要求

  • 工作階段前驗證需要 Active Directory Connector (AD Connector) 目錄。AD Connector 使用以憑證為基礎的交互式 Transport Layer Security (交互式 TLS) 驗證,透過硬體或軟體智慧卡憑證對 Active Directory 使用者進行身分驗證。如需如何設定 AD Connector 和內部部署目錄的詳細資訊,請參閱 目錄組態

  • 若要搭配視窗或 Linux 使用智慧卡 WorkSpace,使用者必須使用 Amazon WorkSpaces 視窗用戶端 3.1.1 或更新版本或 WorkSpaces macOS 用戶端 3.1.5 或更新版本。如需將智慧卡與 Windows 和 macOS 用戶端搭配使用的詳細資訊,請參閱 Amazon 使用 WorkSpaces 者指南中的智慧卡 Support

  • 根 CA 和智慧卡憑證必須符合特定需求。如需詳細資訊,請參閱系統《AWS Directory Service 管理指南》中的在 AD Connector 中啟用 MTL 驗證以搭配智慧卡使用,以及 Microsoft 文件中的憑證需求

    除了這些要求之外,Amazon 用於智慧卡身份驗證的使用者憑證還 WorkSpaces 必須包含下列屬性:

    • 憑證 userPrincipalName (SAN) 欄位中的 AD 使用者 subjectAltName (UPN)。我們建議為使用者的預設 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 或更新版本。

  • 僅當用戶端在 64 位元版本的 WorkSpaces Windows 上執行時,Windows 用戶端應用程式 3.1.1 或更新版本才支援智慧卡。

  • Ubuntu 目前 WorkSpaces 不支援智慧卡驗證。

  • 智慧卡驗證目前僅支援 AD Connector 目錄。

  • 您可以在支援 WSP 的所有區域中使用工作階段內驗證。下列區域可以使用工作階段前驗證:

    • 亞太 (雪梨) 區域

    • 亞太 (東京) 區域

    • 歐洲 (愛爾蘭) 區域

    • AWS GovCloud (美國東部) 區域

    • AWS GovCloud (美國西部) 區域

    • 美國東部 (維吉尼亞北部) 區域

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

  • 對於 Linux 或 Windows 上的工作階段內驗證和工作階段前驗證 WorkSpaces,目前一次只允許一張智慧卡。

  • 對於工作階段前驗證,目前不支援在相同目錄上同時啟用智慧卡驗證和登入驗證。

  • 目前僅支援 CAC 和 PIV 卡。其他類型的硬體或軟體型智慧卡也可以運作,但尚未針對搭配 WSP 使用進行完整測試。

目錄組態

若要啟用智慧卡驗證,您必須以下列方式設定 AD Connector 目錄和內部部署目錄。

AD Connector 目錄組態

在開始之前,確定您的 AD Connector 目錄已按照《AWS Directory Service 管理指南》中的 AD Connector 先決條件所述設定。尤其是,確定您已在防火牆中開啟必要的連接埠。

若要完成 AD Connector 目錄的設定,請依照《AWS Directory Service 管理指南》中的在 AD Connector 中啟用 MTL 驗證以搭配智慧卡使用的指示進行。

注意

智慧卡驗證需要 Kerberos 限制委派 (KCD) 才能正常運作。KCD 要求 AD Connector 服務帳戶的使用者名稱部分與相同使用者AccountName 的 SAM 相符。一個 SAM 不AccountName 能超過 20 個字符。

內部部署目錄組態

除了設定 AD Connector 目錄之外,您也必須確定發行給內部部署目錄之網域控制站的憑證有「KDC 驗證」擴充金鑰使用 (EKU) 設定。若要這麼做,請使用 Active Directory Domain Services (AD DS) 預設 Kerberos 驗證憑證範本。請勿使用網域控制站憑證範本或網域控制站驗證憑證範本,因為這些範本不包含智慧卡驗證的必要設定。

啟用視窗的智慧卡 WorkSpaces

如需有關如何在 Windows 上啟用智慧卡驗證的一般指引,請參閱 Microsoft 文件中的讓智慧卡能透過第三方憑證授權單位登入的指導方針

若要偵測 Windows 螢幕鎖定畫面並中斷工作階段的連線

若要允許使用者在螢幕鎖定時解除鎖定已啟用智慧卡工作階段前驗證的 Windows WorkSpaces ,您可以在使用者的工作階段中啟用 Windows 鎖定螢幕偵測。偵測到 Windows 鎖定畫面時, WorkSpace 工作階段會中斷連線,使用者可以使用其智慧卡與用 WorkSpaces 戶端重新連線。

您可以使用群組政策設定,在偵測到 Windows 螢幕鎖定畫面時,啟用中斷工作階段連線。如需詳細資訊,請參閱 針對 WSP 啟用或停用畫面鎖定時中斷工作階段連線

啟用工作階段內或工作階段前驗證

依預設,Windows 不 WorkSpaces 會啟用以支援使用智慧卡進行工作階段前或工作階段中驗證。如果需要,您可以使用群組原則設定為 Windows WorkSpaces 啟用工作階段內和工作階段前驗證。如需詳細資訊,請參閱 啟用或停用 WSP 的智慧卡重新導向

若要使用工作階段前驗證,除了更新群組政策設定之外,您還必須透過 AD Connector 目錄設定啟用工作階段前驗證。如需詳細資訊,請遵循《AWS Directory Service 管理指南》在 AD Connector 中啟用 mTLS 驗證以用於智慧卡的指示。

讓使用者能夠在瀏覽器中使用智慧卡

如果使用者使用 Chrome 作為瀏覽器,則不需要特別設定即可使用智慧卡。

如果您的使用者使用 Firefox 作為他們的瀏覽器,您可以透過群組政策讓使用者能在 Firefox 中使用智慧卡。您可以在中使用這些 Firefox 群組原則範本 GitHub。

例如,您可以針對 Windows 安裝 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,也可藉由執行 pkcs11-register.exe 程式,將 OpenSC pkcs11 模組載入 Firefox 瀏覽器。若要執行此程式,請按兩下位於 C:\Program Files\OpenSC Project\OpenSC\tools\pkcs11-register.exe 的檔案,或開啟命令提示視窗並執行下列命令:

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

若要驗證 OpenSc pkcs11 模組是否已載入 Firefox,請執行下列操作:

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

  2. 開啟 Firefox。選擇右上角的選單按鈕 Firefox menu button ,然後選擇選項

  3. about:preferences 頁面上,選擇左側導覽窗格中的隱私權與安全性

  4. 憑證之下,選擇安全裝置

  5. 裝置管理員對話方塊中,您應會在左側導覽中看到 OpenSc 智慧卡架構 (0.21),而當您加以選取時應該有下列值:

    模組OpenSC smartcard framework (0.21)

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

故障診斷

如需智慧卡疑難排解的相關資訊,請參閱 Microsoft 文件中的憑證和設定問題

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

  • 插槽與憑證的對應不正確。

  • 智慧卡上有多個可比對使用者的憑證。使用下列條件比對憑證:

    • 憑證的根 CA。

    • 憑證的 <KU><EKU> 欄位。

    • 憑證主體中的 UPN。

  • 擁有多個憑證在其金鑰使用中有 <EKU>msScLogin

一般而言,最好只有一個對應至智慧卡中第一個插槽的憑證用於智慧卡驗證。

用於管理智慧卡上憑證和金鑰的工具 (例如移除或重新對應憑證和金鑰) 可能是製造商特有的工具。如需詳細資訊,請參閱智慧卡製造商提供的文件。

啟用適用於 Linux 的智慧卡 WorkSpaces

注意

WorkSpaces 在 WSP 上的 Linux 目前有以下限制:

  • 不支援剪貼簿、音訊輸入、視訊輸入和時區重新導向。

  • 不支援多個監視器。

  • 您必須使用 WorkSpaces 視窗用戶端應用程式 WorkSpaces 在 WSP 上連線到 Linux。

若要在 Linux 上啟用智慧卡的使用 WorkSpaces,您必須在 WorkSpace 映像中包含 PEM 格式的根 CA 憑證檔案。

若要取得根 CA 憑證

您可以透過多種方式取得根 CA 憑證:

  • 您可以使用第三方憑證授權單位操作的根 CA 憑證。

  • 您可以使用 Web 註冊網站匯出自己的根 CA 憑證,也就是 http://ip_address/certsrvhttp://fqdn/certsrv,其中 ip_addressfqdn 是根憑證 CA 伺服器的 IP 地址和完整網域名稱 (FQDN)。如需使用 Web 註冊網站的相關資訊,請參閱 Microsoft 文件中的如何匯出根憑證授權單位憑證

  • 您可以使用下列程序,從執行 Active Directory Certificate Services (AD CS) 的根 CA 憑證伺服器匯出根 CA 憑證。如需安裝 AD CS 的相關資訊,請參閱 Microsoft 文件中的安裝憑證授權單位

    1. 使用管理員帳戶登入根 CA 伺服器。

    2. 從 Windows 開始功能表,開啟命令提示視窗 (開始 > Windows 系統 > 命令提示)。

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

      certutil -ca.cert rootca.cer

      如需執行 Certutil 的詳細資訊,請參閱 Microsoft 文件中的 Certutil

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

      openssl x509 -inform der -in rootca.cer -out /tmp/rootca.pem
若要將根 CA 憑證新增至您的 Linux WorkSpaces

為了協助您啟用智慧卡,我們已將 enable_smartcard 指令碼新增至我們的 Amazon Linux WSP 套件。此指令碼會執行下列動作:

  • 將根 CA 憑證匯入網路安全服務 (NSS) 資料庫。

  • 安裝用於可插入式驗證模組 (PAM) 驗證的 pam_pkcs11 模組。

  • 執行預設組態,包括pkinit在 WorkSpace 佈建期間啟用。

下列程序說明如何使用enable_smartcard指令碼將根 CA 憑證新增至 Linux,以 WorkSpaces 及如何為 Linux 啟用智慧卡 WorkSpaces。

  1. 在啟用 WSP 通訊協定 WorkSpace 的情況下建立新的 Linux。在 Amazon WorkSpaces 主控台 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。取消註解 pam_succeed_if.soauth 行 並視需要編輯服務清單。

    取消註解 auth 行後,若要允許服務使用智慧卡驗證,您必須將其新增至清單。若要讓服務僅使用密碼驗證,則必須從清單中將其移除。

  4. 執行任何其他自訂 WorkSpace。例如,您可能想要新增整個系統的政策,讓使用者能夠在 Firefox 中使用智慧卡。Chrome 使用者必須自行在其用戶端上啟用智慧卡。 如需詳細資訊,請參閱 Amazon WorkSpaces 使用者指南中的智慧卡 Support。)

  5. 從中建立自訂 WorkSpace 映像並套裝軟體 WorkSpace。

  6. 使用新的自訂套裝軟體 WorkSpaces 為您的使用者啟動。

讓使用者能夠在 Firefox 中使用智慧卡

您可以在 Linux WorkSpace 映像檔中新增 SecurityDevices 政策,讓您的使用者能夠在 Firefox 中使用智慧卡。如需更多有關新增全系統政策到 Firefox 的資訊,請參閱上 GitHub的 Mozilla 政策範本

  1. 在您用來建立 WorkSpace 映像檔的位置上,建立一個名為 policies.json in 的新檔案/usr/lib64/firefox/distribution/。 WorkSpace

  2. 在 JSON 檔案中,新增下列 SecurityDevices 原則,其中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 動作並將 pam_pksc11.sonodebug 參數變更為 debug

  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_finderstdout 上以 NETBIOS\username 形式輸出智慧卡憑證上的使用者名稱。此使用者名稱應符合 WorkSpace 使用者名稱。

在 Active Directory Domain Services (AD DS) 中,NetBIOS 網域名稱是 Windows 2000 前的網域名稱。一般而言 (但不一定),NetBIOS 網域名稱通常是網域名稱系統 (DNS) 網域名稱的子網域。例如,如果 DNS 網域名稱為 example.com,則 NetBIOS 網域通常為 EXAMPLE。如果 DNS 網域名稱為 corp.example.com,則 NetBIOS 名稱通常為 CORP

例如,對於 網域 corp.example.com 中的使用者 mmajor,來自 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 主體名稱明確地新增至命令。例如,對於網域 corp.example.com 中的使用者 mmajor,請使用以下命令:

KRB5_TRACE=/dev/stdout kinit -V mmajor

如果此命令成功,則問題很可能是從使用者名稱到 Kerberos 主要 WorkSpace 名稱的對應。檢查 /etc/krb5.conf 檔案中的 [appdefaults]/pam/mappings 區段。

如果此命令不成功,但密碼型 kinit 命令確實成功,請檢查 /etc/krb5.conf 檔案中的 pkinit_ 相關組態。例如,如果智慧卡包含多個憑證,您可能需要對 pkinit_cert_match 進行變更。