Ktpass和KTab的主要用法
不少人都沒(méi)搞清楚Ktpass跟Ktab的用法,特此寫(xiě)一篇文章來(lái)敘說(shuō)一下。
我假設(shè)你對(duì)Kerberos有所認(rèn)識(shí),可以讀我的一篇文章<Weblogic Security In Action>中篇,里面初步介紹了Kerberos協(xié)議(基于Windows KDC)。
在Kerberos中,安全性完全是依賴(lài)于Share Secret,也就是,KDC跟Kerberos Service之間都共享著一條Key,Ktpass這個(gè)命令行工具承擔(dān)著這樣一個(gè)角色,它能夠?qū)⒎荳indows Kerberos服務(wù)配置一個(gè)Service Principal,通常類(lèi)似于HTTP/Service@DomainName,并且同時(shí)生成一個(gè)Keytbab,這樣做的目的是在Windows域中的KDC和非Windows的服務(wù)(Kerberos Service)建立一種安全的信任關(guān)系,Keytab文件中就是存放著那條非常重要的跟KDC打交道的Secret Key。
你更改了Keytab中的Key,就必須同時(shí)更改Kerberos database中的Key。操作Keytab,JDK提供了一個(gè)很好的工具叫做KTab。
首先,在Windows域控制器上創(chuàng)建一個(gè)用戶(hù)tomcat2005, 這是一個(gè)Windows的用戶(hù),我們使用Ktpass將一個(gè)Kerberos service (HTTP/tomcat@MYDAVID.ORG)Mapping到這個(gè)用戶(hù)上面。Ktpass會(huì)修改當(dāng)前用戶(hù)在Windows AD中的用戶(hù)登錄名,你可以用setspn -L tomcat2005來(lái)查看究竟有多少Service Principal綁定到tomcat2005上。
C:\>ktpass -princ HTTP/tomcat@MYDAVID.ORG -mapuser tomcat2005 -pass tomcat2005 -out tomcat2005_keytab -crypto des-cbc-md5
Successfully mapped HTTP/tomcat to tomcat2005.
Key created.
Output keytab to tomcat2005_keytab:
Keytab version: 0x502
keysize 50 HTTP/tomcat@MYDAVID.ORG ptype 1 (KRB5_NT_PRINCIPAL) vno 1 etype 0x3 (DES-CBC-MD5) keylength 8 (0xb64540dace6e70d3)
Account has been set for DES-only encryption.
接著,執(zhí)行,目的是往keytab上面增加新的service principal。
C:\>ktab -k tomcat2005_keytab -a HTTP/tomcat@MYDAVID.ORG
Password for HTTP/tomcat@MYDAVID.ORG:tomcat2005
Done!
Service key for HTTP/tomcat@MYDAVID.ORG is saved in C:\\tomcat2005_keytab
你可能問(wèn),Ktpass和Ktab都往keytab文件兩面寫(xiě)Key,其實(shí),他們都是寫(xiě)同樣的Key,只不過(guò)Ktpass還有一個(gè)AD帳號(hào)Set SPN Name的作用。
還可以通過(guò)ktab -l -k tomcat2005_keytab, 來(lái)看看里面究竟有針對(duì)什么Service的Key
C:\>ktab -l -k tomcat2005_keytab
Keytab name: C:\\tomcat2005_keytab
KVNO Principal
--------------------------------
4 HTTP/tomcat@MYDAVID.ORG
KVNO是Service Key的更新序號(hào),不需要理會(huì),關(guān)鍵的是Principal。
posted on 2005-12-02 00:48 david.turing 閱讀(6376) 評(píng)論(1) 編輯 收藏 所屬分類(lèi): Security領(lǐng)域