分享

david turing [SSO&Enterprise Security]

 jianjun0921 2006-04-24

Ktpass和KTab的主要用法

不少人都没搞清楚Ktpass跟Ktab的用法,特此写一篇文章来叙说一下。
我假设你对Kerberos有所认识,可以读我的一篇文章中篇,里面初步介绍了Kerberos协议(基于Windows KDC)。
在Kerberos中,安全性完全是依赖于Share Secret,也就是,KDC跟Kerberos Service之间都共享着一条Key,Ktpass这个命令行工具承担着这样一个角色,它能够将非Windows Kerberos服务配置一个Service Principal,通常类似于HTTP/Service@DomainName,并且同时生成一个Keytbab,这样做的目的是在Windows域中的KDC和非Windows的服务(Kerberos Service)建立一种安全的信任关系,Keytab文件中就是存放着那条非常重要的跟KDC打交道的Secret Key。

你更改了Keytab中的Key,就必须同时更改Kerberos database中的Key。操作Keytab,JDK提供了一个很好的工具叫做KTab。


首先,在Windows域控制器上创建一个用户tomcat2005, 这是一个Windows的用户,我们使用Ktpass将一个Kerberos service (HTTP/tomcat@MYDAVID.ORG)Mapping到这个用户上面。Ktpass会修改当前用户在Windows AD中的用户登录名,你可以用setspn -L tomcat2005来查看究竟有多少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.


接着,执行,目的是往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

你可能问,Ktpass和Ktab都往keytab文件两面写Key,其实,他们都是写同样的Key,只不过Ktpass还有一个AD账号Set SPN Name的作用。

还可以通过ktab -l -k tomcat2005_keytab, 来看看里面究竟有针对什么Service的Key

C:\>ktab -l -k tomcat2005_keytab
Keytab name: C:\\tomcat2005_keytab
KVNO Principal
--------------------------------
4 HTTP/tomcat@MYDAVID.ORG

KVNO是Service Key的更新序号,不需要理会,关键的是Principal。

由 david.turing 发表于 12:44 AM | 评论 (0)

November 03, 2005

Yale CAS项目总结

SSO总会有一个结束的时候,我最终把CAS Server 2.0放到Weblogic Portal上,并实现了到其他WebApp的单点登陆。困难比我原先想象的要大,总结几点,希望对来者有所帮助。
1,搞SSO前请先熟悉SSL/PKI,因为,CAS的安全性很大程度依赖于SSL,没有安全性,不敢想象SSO有何作为。
2,因为我们的环境是在Weblogic Portal上,Portal环境上,调试CAS费了我好大力气,加之我重写了CAS的LoginModule(CAS不提供J_Security_check登陆方式),中途抛出的错误很多,访问BEA Support网站是家常便饭了。
3,CAS需要配置信任证书,如果象我那样一步一步地创建根CA,ServerCA,恐怕会比较辛苦,但证书的确让我高枕无忧,从CAS Server和各个Web应用之间建立一种更松耦合的信任关系。
4,IE端到CAS Server的双向SSL虽是画蛇添足,但是在一些高安全性的SSO环境,如网上付费,付出少许的计算代价,即让身份欺诈无所遁形。

冷静下来,想了一下SSO的用处,看来在互连星空中会有卖点,事实上,电信已经使用了SSO了,联通在信平台也在各SP与MISC之间部署SSO,随着B2B,B2C的发展,相信SSO会有很不错的前途。

我个人对CAS的评价是,
PureJava Impl,OpenSource,能轻松在各种WebServer间移植,协议并没有Kerberos那么复杂(当然Kerberos更安全),所以使用和调试起来,没有Kerberos那么痛苦。实战中,本人更倾向使用CAS 3.0,基于Spring的一种实现方式,将来有空必为此写一Blog.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多