我有:
- Windows 7 用戶端電腦。我不是這台機器的管理員。
- Windows 2008R2 伺服器,我想在其上使用遠端桌面開啟會話。
- A遠端桌面網關,也運行 Windows 2008R2。
- 一張智能卡。
伺服器配置為允許智慧卡登入。網關也需要智慧卡身份驗證。所有客戶端和伺服器都知道並信任所有相關的 CA 證書,沒有證書過期,所有 CRL 都發佈在應有的位置。
至關重要的是,智慧卡上的憑證有一個擴充密鑰用法副檔名 (EKU),不包含「智慧卡登入」OID。不過,它具有「客戶端身份驗證」功能。伺服器和網關已配置為接受憑證:這是一個名為「允許不帶擴展密鑰使用憑證屬性的憑證」的策略設置,如上所述那裡。
問題
客戶端使用 .rdp 文件,其中指定了伺服器名稱和網關名稱。由於網關只是網關,而不是實際的遠端桌面伺服器,因此它沒有可顯示的「登入畫面」。相反,智慧卡驗證依賴於用戶端(Windows 中的標準 RD 用戶端)處理的 GUI,mstsc.exe
讓使用者選擇其智慧卡並輸入其 PIN 碼。彈出視窗應如下所示:
(抱歉出現法文彈出視窗;我手邊沒有英文 Windows 7。)
不幸的是,該彈出視窗並不是這樣出現的。相反,我得到這個:
分析
如上所述這裡,客戶端應用程式 (mstsc.exe) 將讓作業系統 (Windows 7) 「枚舉」智慧卡。作業系統將尋找包含滿足某些條件的憑證的智慧卡,特別是在任何此類憑證中找到的任何 EKU 擴充功能都包含「智慧卡登入」OID。這是在實際嘗試與網關通訊之前完成的,更不用說最終目標伺服器了。網關和伺服器會對我的憑證非常滿意;他們已經這樣配置了。但是,客戶端作業系統強制執行一樣的規則,依照自己的配置。就我而言,Windows 7 拒絕讓我使用智慧卡,因為它的本機原則會拒絕它開啟本機會話(即使我根本沒有嘗試開啟本機會話)。
這用於 Windows XP 用戶端,因為 Windows XP 的「智慧卡選擇彈出視窗」不會強制執行這些檢查(Windows XP 以更具限制性的方式檢查 EKU,因為它不能容忍缺少 EKU 擴展,但它僅在實際嘗試開啟本機會話時強制執行這些檢查,而不是在為遠端會話選擇憑證時強制執行這些檢查。
我無法使用的解決方案
「正常」解決方案是使用與伺服器相同的「允許沒有擴充金鑰使用憑證屬性的憑證」來設定本機用戶端(Windows 7)。這樣,智慧卡選擇彈出視窗現在接受顯示智慧卡,一切都很好。我在另一個系統上測試過。但是,我無法在目標系統上執行此操作,因為更改本機原則需要管理員權限,而我沒有。同樣,對於屬於網域的客戶端,可以從 AD 伺服器上的 GPO 推送設置,但由於缺乏適當的權限,這再次被禁止。
也有人可能會說,此策略設定實際上允許使用 EKU 中沒有正確 OID 的憑證登入客戶端計算機,這可以被視為不良副作用。我正在嘗試開啟一個會話遠端伺服器;我不必更改在本地客戶端。
較舊的 mstsc.exe 版本(來自 Windows XP)顯然可以連接到伺服器,而無需任何客戶端身份驗證;在這種情況下,遠端伺服器將顯示其登入畫面(「藍綠大螢幕」)並自行處理智慧卡枚舉。既然伺服器有適當的策略,那麼這就會起作用。但是,我無法使用這樣的解決方案,原因有二:
- Windows 7 中的 mstsc.exe 顯然堅持使用自己的彈出視窗進行身份驗證。
- 有一個閘道,與最終目標伺服器相反,它沒有“登入畫面”可顯示。當使用需要客戶端智慧卡身份驗證的網關時,用戶端智慧卡選擇必須由客戶端軟體管理。
問題
所以這是我的問題:有辦法解決這個問題嗎?理想情況下,mstsc.exe 中的某種配置設定(命令列開關或 .rdp 檔案中的子句)將指示 mstsc.exe不是使用作業系統智慧卡選擇彈出窗口,但要自行進行枚舉,沒有試圖強制執行有關 EKU 的任何內容。我沒有發現這種特徵的痕跡,但沒有證據並不等於不存在。我可能只是錯過了。
答案1
為連接建立一個 .rdp 文件,在 .rdp 檔案內設定 enablecredsspsupport:i:0 並確保啟用了本地資源映射的智慧卡選項(預設為打開,因此應該已經是這種情況,除非您明確更改設定。)
請參閱以下條目以了解更多詳細資訊: http://blogs.msdn.com/b/rds/archive/2007/01/22/vista-remote-desktop-connection-authentication-faq.aspx#_When_to_use
我不是相當確定這是否可以解決您的問題,因為中間有網關,但坦白說,我想不出任何其他可能的解決方案來解決這個問題。