不少人都没搞清楚Ktpass跟Ktab的用法,特此写一篇文章来叙说一下。
我假设你对Kerberos有所认识,可以读我的一篇文章<Weblogic Security In Action>中篇,里面初步介绍了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。
分享到:
相关推荐
在"rcp-trainning"(RCP训练)阶段,学习和掌握KTABLE的使用至关重要。RCP是一种基于Java的框架,用于构建桌面应用程序,而KTABLE的集成能显著提升RCP应用的界面质量。通过实践和训练,开发者能够熟练运用KTABLE的...
您不仅可以使用Ktab整理浏览器,而且可以减少Chrome的内存使用量,并深入了解如何浏览网络。 使用Ktab几个月(或几年),然后浏览存档,查看您在人生中给定时间段内感兴趣的内容。 网站构成了有史以来最大的信息存储...
从提供的文件内容中,我们可以提炼出关于Java命令的详细知识点,主要涉及Java开发和运行环境下的各种命令工具的用途与使用方法。文件中列举了多个Java相关工具,并简要描述了它们的功能,下面逐一详细说明。 1. ...
在给出的代码中,使用了循环和位操作(如RRC、RLC)来完成这一过程。最后,通过查表(如KTAB)找到与特征值匹配的键值,并存储在特定寄存器中。 在实际应用中,单片机不断执行键盘扫描子程序,检测按键状态。一旦...
Java线程在运行时除了使用堆内存(Heap)用于对象分配外,还需要一定的非堆内存,包括栈空间、程序计数器、本地方法栈和元空间。每个线程都有自己独立的栈,用于存储方法调用的局部变量和操作数。栈的大小取决于JVM...
接下來,我們將更深入地探討部分核心工具的功能和用法。 - **`javac.exe`**:這個工具是Java編譯過程的核心,它接受Java源代碼文件(.java)並將其編譯成字節碼文件(.class)。用戶可以指定不同的選項來控制編譯行...
│ │ │ │ ktab.exe │ │ │ │ libxml2.dll │ │ │ │ libxslt.dll │ │ │ │ management.dll │ │ │ │ mlib_image.dll │ │ │ │ msvcr100.dll │ │ │ │ net.dll │ │ │ │ nio.dll │ │ │ │ ...