You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kerberos HTTP服务GSS认证报错:凭证无效(主机名/域名不匹配)

解决方案:让curl严格匹配请求主机名获取Kerberos票据

针对你遇到的curl获取的Kerberos HTTP票据与请求主机名不匹配、受/etc/hosts顺序影响的问题,以下是几个可行的解决方法:

1. 关闭Kerberos客户端的反向DNS解析

Kerberos客户端默认会通过反向DNS解析请求IP对应的主机名,并用这个主机名生成SPN请求,这是导致票据主体与请求FQDN不一致的核心原因之一。关闭反向解析后,客户端会直接使用请求中指定的正向主机名。

  • 操作步骤:
    修改/etc/krb5.conf配置文件,在[libdefaults]段添加或修改以下配置:

    [libdefaults]
    default_realm = HADOOP.COM
    rdns = false  # 关闭反向DNS解析
    ...  # 其他原有配置
    
  • 效果:
    curl发起请求时,会直接使用你指定的master.hadoop.com作为SPN的主机部分,向KDC请求HTTP/master.hadoop.com@HADOOP.COM的票据,不再受/etc/hosts顺序或反向DNS结果的影响。

2. 为Hadoop服务配置Kerberos SPN别名

通过在KDC中为Hadoop节点添加多个HTTP SPN,并将它们绑定到同一个keytab文件,让Hadoop服务可以识别多个FQDN对应的票据。

  • 操作步骤:

    1. 在Hadoop的KDC中添加两个HTTP主体(如果还未添加):
      kadmin.local -q "addprinc -randkey HTTP/master.hadoop.com@HADOOP.COM"
      kadmin.local -q "addprinc -randkey HTTP/hadoopmaster.idm.com@HADOOP.COM"
      
    2. 将两个SPN导出到Hadoop使用的keytab文件中:
      kadmin.local -q "ktadd -k /etc/hadoop/conf/hadoop.keytab HTTP/master.hadoop.com@HADOOP.COM"
      kadmin.local -q "ktadd -k /etc/hadoop/conf/hadoop.keytab HTTP/hadoopmaster.idm.com@HADOOP.COM"
      
    3. 修改Hadoop的core-site.xml,允许多个SPN主体:
      <property>
        <name>hadoop.http.authentication.kerberos.principal</name>
        <value>HTTP/master.hadoop.com@HADOOP.COM,HTTP/hadoopmaster.idm.com@HADOOP.COM</value>
      </property>
      
  • 效果:
    无论curl获取的是哪个FQDN的HTTP票据,Hadoop服务都能通过keytab中的密钥验证票据合法性,避免因SPN不匹配导致的403错误。

3. 强制curl使用指定主机名进行认证

使用curl的--resolve参数绕过系统DNS解析,直接将请求的FQDN映射到节点IP,配合Kerberos的rdns=false配置,确保curl严格使用指定的主机名生成SPN请求。

  • 操作命令:

    curl -k -v --negotiate -u : --resolve master.hadoop.com:8090:<你的节点IP> https://master.hadoop.com:8090/cluster
    
  • 效果:
    curl会直接使用你指定的master.hadoop.com作为SPN的主机部分,不受/etc/hosts顺序影响,生成与Hadoop配置一致的票据请求。

内容的提问来源于stack exchange,提问作者uds0128

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:50:28