我正在使用带有 Kerberos 的 AD 配置 apache/SSO 身份验证。我的 http 服务器是 Debian Wheezy,AD 是 Windows Server 2012。
kpass
我使用命令在 WS2012 上为每种可用的加密类型生成了 keytabs 文件。
[email protected]
当我尝试与的用户打开会话时kinit
,它可以工作。
当我尝试使用 打开会话时,收到以下消息:HTTP/[email protected]
kvno HTTP/[email protected]
kvno: KDC has no support for encryption type while getting credentials for HTTP/[email protected]
此外,当我检查使用的加密时[email protected]
,我发现:
root@SERVER:~# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
03/04/2015 12:48:21 03/04/2015 22:48:17 krbtgt/[email protected]
renew until 04/04/2015 12:48:21, Etype (skey, tkt): arcfour-hmac, arcfour-hmac
我尝试使用以下方式定制我的/etc/krb5.conf
:
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
并且使用keytab文件加密但arcfour-hmac
没有成功。
我不明白如何改变用于通信的加密类型,为什么它总是需要 arcfour-hmac 以及为什么当我给它 arcfour-hmac 加密时,什么都没有变化......
如何确保 /etc/krb5.conf 更改有效以及如何使 Kerberos 票证生成也能正常工作?
答案1
Active Directory 域控制器支持的加密类型列在msDS-SupportedEncryptionTypes
域控制器的计算机对象的属性中。在默认安装中,它们通常如下所示:
RC4_HMAC_MD5
AES128_CTS_HMAC_SHA1_96
AES256_CTS_HMAC_SHA1_96
这是一个位掩码,其结果为十进制 28,因此它将类似于00011100
。
因此,当您问为什么域控制器“总是只想要 ARC4-HMAC”时,这是因为您的客户端没有与域控制器共同的另外两种加密类型,因此它们在协商过程中被淘汰。
(注意:RC4_HMAC_MD5 确实是所有可能的加密类型中最差、最弱的,但有时也需要支持传统场景和与非 Microsoft 产品的互操作性。)
我查阅了一些文档,找到了其他人的配置文件示例,并认为这可能会有用:
http://wiki.squid-cache.org/ConfigExamples/Authenticate/Kerberos
; for Windows 2008 with AES
default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
请注意,除了支持更好的加密类型之外,它们还在rc4-hmac
其配置中指定了与您的配置不同arcfour-hmac-md5
。 (另外不要忘记那permitted_enctypes
行,我在您的帖子中没有看到它。)
我不能 100% 确定这是否能解决您的问题,因为我现在无法测试它,但希望它能有所帮助。
答案2
这是配置 Kerberos 时最常见的问题,请通过执行以下操作解决此问题,
1)vi /var/kerberos/krb5kdc/kdc.conf
2)检查supported_enctypes
,使用其中提到的任何加密技术。
希望这能解决问题。