找不到适当类型的密钥来解密 AP REP - AES256 CTS 模式与 HMAC SHA1-96

Posted

技术标签:

【中文标题】找不到适当类型的密钥来解密 AP REP - AES256 CTS 模式与 HMAC SHA1-96【英文标题】:Cannot find key of appropriate type to decrypt AP REP - AES256 CTS mode with HMAC SHA1-96 【发布时间】:2018-12-13 01:48:36 【问题描述】:

我有一个带有 Spnego SSO 设置的 tomcat 服务器,它运行良好,没有任何问题。 现在我想在它前面添加一个 Apache 服务器来启用 SSL。 Apache 服务器使用 AJP 与其通信:

<VirtualHost *:58443>
  SSLEngine on
  ServerName ca09417d.global.local:58443
  SSLCertificateFile "$SRVROOT/conf/ssl/ca09417d.server.cer"
  SSLCertificateKeyFile "$SRVROOT/conf/ssl/ca09417d.server.key"
 ...
  ProxyRequests off
  ProxyPreserveHost On
  ProxyPass /vcaps3 ajp://cavcdbdev02:58009/vcaps3
  ProxyPassReverse /vcaps3 ajp://cavcdbdev02:58009/vcaps3   
</virtualhost>

之后,服务器报这个错误:

KrbException: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - AES256 CTS mode with HMAC SHA1-96
sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:278)
sun.security.krb5.KrbApReq.<init>(KrbApReq.java:149)
sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:108)
sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:829)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:906)
sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:556)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
net.sourceforge.spnego.SpnegoAuthenticator.doSpnegoAuth(SpnegoAuthenticator.java:444)
net.sourceforge.spnego.SpnegoAuthenticator.authenticate(SpnegoAuthenticator.java:283)
net.sourceforge.spnego.SpnegoHttpFilter.doFilter(SpnegoHttpFilter.java:229)

所以我尝试了这些东西:

为了确保我的 JDK 可以执行 AES 256 在Apache本地登录,成功了,因为我有这个设置:spnego.allow.localhost =true 检查两个服务器日志,一无所获 Apache 失败后,我仍然可以直接在 tomcat 服务器上使用 SSO

现在我不知道该怎么做才能修复它。

我的tomcat版本是8.5.32 我的JDK版本是1.8.0_151 我的 Apache 版本是 httpd-2.4.33-o110h-x86-vc14-r2 我的 Spnego 版本是 7

这是我的 krb5.conf 的主要部分:

[libdefaults]
default_tkt_enctypes = rc4-hmac aes256-cts aes128-cts
default_tgs_enctypes = rc4-hmac aes256-cts aes128-cts
permitted_enctypes   = rc4-hmac aes256-cts aes128-cts

你能帮帮我吗?

非常感谢!

贾斯汀

【问题讨论】:

【参考方案1】:

我遇到了类似的错误,因为 keytab 文件是使用错误的/crypto 配置生成的。

找不到合适类型的密钥来解密 AP-REQ - RC4 with HMAC)

使用/crypto ALLktpass 命令生成一个新的keytab 文件:

ktpass /out "server.keytab" /crypto ALL /princ HTTP/server@REALM /mapuser KERBEROS_SERVICEUSER /pass PASSWORD /ptype KRB5_NT_PRINCIPAL

HTTP/server@REALMKERBEROS_SERVICEUSERPASSWORD 替换为相应的值。

【讨论】:

以上是关于找不到适当类型的密钥来解密 AP REP - AES256 CTS 模式与 HMAC SHA1-96的主要内容,如果未能解决你的问题,请参考以下文章

找不到存储在数据集中的类型的编码器。尽管提供了适当的隐式,但错误[重复]

解决 ssh 找不到对应主机密钥类型

Gitlab 自动部署已停止工作,服务器日志中出现“找不到匹配的主机密钥类型”错误

lftp 错误:端口 22:找不到匹配的主机密钥类型。他们的提议:ssh-dss

ros和V_REP仿真编译出现的问题

第六章 加密与解密