標籤:
最近在嘗試用智慧卡做身分識別驗證,以飛天誠信的ePass3000為例。
1、網路環境搭建:
用3台虛機+1台實體機搭一個單獨的測試網段:172.16.188.x,如下:
機器名 |
IP |
作業系統 |
作用 |
dom |
172.16.188.1 |
win server 2008 R2/虛機 |
AD網域服務器、AD認證伺服器、IIS伺服器 |
ter |
172.16.188.10 |
win server 2008 R2/虛機 |
遠端桌面服務器(也就是以前的終端伺服器) |
win7 |
172.16.188.100 |
win7/虛機 |
類比win7用戶端 |
xp |
172.16.188.101 |
win xp sp3/實體機 |
類比xp用戶端 |
2、配置認證伺服器
1)進入dom,先添加Active Directory網域服務、Web伺服器(IIS),再添加Active Directory認證服務,這樣會在IIS中建立一個CertSrv網站,用於認證申請和發放。添加認證服務時,會產生一個CA根憑證比如secret-DOM-CA,後續所有的認證都由這個認證頒布。
2)管理憑證模板:開啟管理工具->憑證授權單位->憑證範本,右鍵點擊“管理”。在彈出的”憑證範本控制台”中,修改“智慧卡登入”和“智慧卡使用者”右鍵屬性->安全選項卡->添加Domain Users的允許讀取+註冊。也可以通過複製現有模板建立新的憑證範本。
3)頒發憑證範本:開啟管理工具->憑證授權單位->憑證範本,右鍵點擊“建立”->要頒發的憑證範本,選擇“智慧卡登入”和“智慧卡使用者”,確定。
4)修改CA屬性:開啟管理工具->憑證授權單位->CA名字(如secret-DOM-CA),右鍵屬性->安全,添加Domain Users的允許讀取+請求認證。
3、配置IIS伺服器
1)添加https支援:開啟管理工具->Internet資訊服務(IIS)管理器->Default Web Site->右鍵“編輯綁定”。預設是同時支援http+https的,如果沒有,手動添加https,SSL認證選擇一個即可,例如dom.secret.company.com。
2)添加CertSrv身分識別驗證:因為以某個使用者登入CertSrv並提交申請,就會產生該使用者的認證,所以要去掉匿名驗證,並添加基本+摘要式驗證。點擊CertSrv網站->身分識別驗證,做相應的禁用/啟用即可。
3)如果不綁定SSL,會報“為了完成憑證註冊,必須將CA的網站配置為使用https身分識別驗證”。
4、佈建網域環境
1)加域:另外3台機器改成上述名字並加入secret.company.com域,重啟之後就入域了。這時管理工具->Active Directory使用者和電腦->Computers裡會出現加入域的機器,分別是ter、win7、xp。
2)加域使用者:管理工具->Active Directory使用者和電腦->Users裡添加使用者test。
3)安裝ePass3000:所有機器都安裝ePass3000驅動,注意勾選“支援智慧卡登入作業系統或者VPN”,據說只需要在提交申請的機器上安裝即可。
5、申請認證
1)登入CertSrv:在任何一台安裝了ePass驅動的機器上,開啟IE輸入https://dom.secret.company.com/certsrv(註:如果直接輸IP地址172.16.188.1在IE8及以上版本會報“此網站的安全性憑證有問題”,這是因為認證標識的是網域名稱、而不是IP,如果綁定時產生一個標識IP的認證,那麼輸IP地址就不會報了),使用test使用者登入。
2)申請認證:在插入ePass3000的情況下,點擊申請認證->進階認證申請->建立並向此CA提交一個申請,首次使用要安裝外掛程式CertEnrollCtrl。這時憑證範本下拉框裡應該有“智慧卡使用者”和“智慧卡登入”這兩項了,預設只有使用者+基本EFS,如果只有這2項,或者乾脆1項都沒有,並且報“找不到任何憑證範本。您沒有從該CA申請認證的許可權或者在訪問Active Directory時發生錯誤”的話,請參照“2、配置認證伺服器”。CSP下拉框裡應該有“FEITIAN ePassNG RSA Cryptographic Service Provider”,如果沒有,說明這台機器上ePass的驅動安裝有問題,比如我在Server 2008 R2上就怎麼也出不來這一項。
3)安裝認證:點擊提交,ePass開始產生金鑰組。下一個頁面,點擊“安裝認證”,ePass開始產生X.509認證。使用ePass的管理工具ePassNgMgr.exe,可以清楚的看到usb裡已經存放了test使用者的認證和金鑰組了。
6、Smart Card登入windows
在windows登入介面插入智慧卡,輸入pin碼,即可以test的域使用者身份登入。這裡有2個小問題:
1)如果輸入pin碼後報驗證無效,請嘗試安裝CA根憑證,即把CA的根憑證加入當前機器的“可信任的根憑證授權單位”。
2)如果usb裡存有多個認證,window登入時只會取第一個,而瀏覽器(IE8+、chrome、firefox等)一般都會提示你選擇其中一個。
7、Smart Card登入遠端桌面
1)先插入智慧卡,如果連的是xp,輸好IP點擊串連時就會直接讓你輸pin碼,如果是連win7+,會有3種方式讓你選擇,選擇第3項智慧卡登入即可。
2)可能會報“智慧卡錯誤:卡所需要的磁碟機不在系統上”:這個問題還沒有完全解決,目前連xp是OK的,但連win7+Server 2008 R2都報這個錯。我理解應該是遠程機器上的ePass驅動沒有安裝正確,但是通過正常登入遠端桌面後發現智慧卡倒是正確映射過去了。
- 但是在訪問CertSrv->進階認證申請時,CSP裡確實沒有“FEITIAN ePassNG RSA Cryptographic Service Provider”。
- 這篇《How to find CSP currently installed on a computer》指出了本機所有CSP在註冊表裡的位置,如果手工把xp裡的Feitian CSP登錄機碼匯入到目標機器,再次開啟CertSrv->進階認證申請頁面時,CSP下拉框裡有了Feitian,但選擇後報“您可能選擇了一個不支援在模板中定義的密鑰類型的CSP。請在模板中更改密鑰類別,或者選擇一個不同的CSP或憑證範本。”,看來似乎還是驅動沒能正確安裝+註冊,呵呵,這點存疑!
3)ePass安裝問題:有可能安裝後報“Initialize PKCS#11 Library Failed, 0x0000 0030”,開啟services.msc發現關鍵服務ngSlotD沒有建立或沒能啟動。可自行建立:
1 sc create ngslotd binPath= "%ProgramFiles%\ngsrv\ngslotd.exe" start= auto depend= ScardSvr2 sc start ngslotd
4)允許遠端桌面:預設的域策略似乎不允許遠端桌面。網域服務器->管理工具->組策略管理->組策略對象->Default Domain Policy->右鍵編輯,開啟群組原則管理編輯器。
- 電腦配置->策略->windows設定->安全設定->本地策略->使用者權限分配->允許通過遠端桌面服務登入裡,添加Domain Users、Remote Desktop Users等相關組。
- 電腦配置->策略->系統管理範本->windows組件->遠端桌面服務->遠端桌面工作階段主機->串連->允許使用者使用遠端桌面服務進行遠端連線,改為已啟用。
- 如果上述設定都無效,可以在目標機器->右鍵我的電腦->屬性->遠程->選擇使用者...裡添加Domain Users、Remote Desktop Users等相關組。
8、引用
1)《Smart Card Logon And Authentication》
2)《USB eToken for Windows domain user RDP Authentication》
3)《How to find CSP currently installed on a computer》
飛天誠信usb-key登入windows+遠端桌面