大多数使用MIT krb5 1.9或更高版本可以使用跟踪日志记录提供有关内部krb5库操作的信息。要启用此功能,可以在运行程序之前将KRB5_TRACE环境变量设置为文件名。在大多数操作系统上,文件名/ dev / stdout可用于将跟踪日志记录输出发送到标准输出上。
如下示例,显示了调用kvno命令的跟踪日志记录输出:
shell% env KRB5_TRACE=/dev/stdout kvno krbtgt/KRBTEST.COM [9138] 1332348778.823276: Getting credentials [email protected] -> krbtgt/[email protected] using ccache FILE:/me/krb5/build/testdir/ccache [9138] 1332348778.823381: Retrieving [email protected] -> krbtgt/[email protected] from FILE:/me/krb5/build/testdir/ccache with result: 0/Unknown code 0 krbtgt/[email protected]: kvno = 1
调试Kerberos的Java类,可以打开调试日志记录的系统属性。 这些属性可以进行有意义的调试。
第一个属性可以处理Kerberos错误,可以帮助解决配置错误的KDC服务器,krb5.conf问题以及其他问题。
-Dsun.security.krb5.debug=true
第二个属性专门用于Kerberos安全Web端点的SPNEGO调试。
-Dsun.security.spnego.debug=true
可以使用Apache Hadoop和相关组件的* _OPTS变量设置这些属性,如下例所示:
HADOOP_OPTS =“ - Dsun.security.krb5.debug = true”
当打开sun.security.krb5.debug=true时,示例debug 信息如下所示(只打印出一部分):
Debug is true storeKey false useTicketCache false useKeyTab false doNotPrompt false ticketCache is null isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is false [Krb5LoginModule] user entered username: [email protected] Java config name: null Native config name: C:\Windows\krb5.ini Loaded from native config >>> KdcAccessibility: reset default etypes for default_tkt_enctypes: 23 16 3 1 23 3. >>> KrbAsReq creating message >>> KrbKdcReq send: kdc=10.97.219.8 TCP:88, timeout=30000, number of retries =3, #bytes=135 >>> KDCCommunication: kdc=10.97.219.8 TCP:88, timeout=30000,Attempt =1, #bytes=135 >>>DEBUG: TCPClient reading 627 bytes >>> KrbKdcReq send: #bytes read=627 >>> KdcAccessibility: remove 10.97.219.8 >>> EType: sun.security.krb5.internal.crypto.ArcFourHmacEType >>> KrbAsRep cons in KrbAsReq.getReply xyang
KDC has no support for encryption type while getting initial credentials credential verification failed: KDC has no support for encryption type
这种情况通常发生在尝试使用仅具有DES密钥的Principal时,在默认情况下禁用DES的版本(MIT krb5 1.7或更高版本)中, DES加密被认为是弱加密的。 如果无法从其使用中移除,可以通过将allow_weak_crypto = true添加到krb5.conf的[libdefaults]部分来重新启用DES。
Cannot create cert chain: certificate has expired
此错误消息表示PKINIT身份验证失败,表明客户端证书,KDC证书或其上方签名链中的某个证书已过期。
如果KDC证书已过期,则此消息将显示在KDC日志文件中,并且客户端将收到“Preauthentication failed”错误。 (在1.11版之前,KDC日志文件消息错误地显示为“Out of memory”。在1.12版之前,客户端将收到“Generic error”。)
kprop: No route to host while connecting to server
确保Slave KDC的主机名(如kprop所示)是正确的,并且Master KDC和Slave KDC之间的任何防火墙都允许在端口754上建立连接。
kprop: Server rejected authentication (during sendauth exchange) while authenticating to server
确保如下:
主从KDC之间的时间是同步的;
Master KDC 的 Stash文件已从主服务器复制到从服务器上的指定位置;
Slave KDC的默认keytab文件中,包含slave的主机名的Host Principal。
如需了解更多的关于Kerberos 配置的信息,请访问 Kerberos 实践课程 和 调试课程系列(https://ke.qq.com/course/394424?tuin=9239b190)