智能卡做身份驗證


智能卡做身份驗證

https://www.cnblogs.com/AlexanderYao/p/4307304.html

 

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= ScardSvr
2 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

 

============= End

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM