spring-boot&kerberos-krbexception:不支持默认类型的默认etype

aelbi1ox  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(440)

我正在使用springboot1.5.6.release应用程序使用kerberos身份验证向kafka0.11发送消息。这是我的 kafka-jaas.conf :

KafkaClient{
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  storeKey=true
  useTicketCache=true
  keyTab="/home/tomi/user-matXp.com.keytab"
  principal="user/matXp.com@COM";
};

以及 application.yml :

spring:
  kafka:
    bootstrap-servers: "kafka-server.com:9092"
    producer:
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
    properties:
      security.protocol: SASL_SSL
      sasl.mechanism: GSSAPI
      sasl.kerberos.service.name: kafka

我启动的应用程序如下:

-java -jar -Djava.security.auth.login.config=/home/tomi/kafka-jaas.conf
-Djava.security.krb5.conf=/home/tomi/krb5.conf 
kafka-0.0.1-SNAPSHOT.jar &> output.log&

当我试图发送信息时 sun.security.krb5.KrbException: no supported default etypes for default_tkt_enctypes .
在我的
krb5.conf default_tkt_enctypes 定义为 aes256-cts-hmac-sha1-96 . 我试图在krb5.conf中注解掉这一行,但后来我发现 sun.security.krb5.Asn1Exception: Identifier doesn't match expected value (906) .
有没有办法解决这个问题?

yqkkidmi

yqkkidmi1#

问题是jce无限实力政策没有包括在内。默认情况下禁用。
解决办法是取消注解 crypto.policy=unlimited$JAVA_HOME/jre/lib/security/java.security . 这也可以在应用程序中完成 Security.setProperty("crypto.policy", "unlimited"); .

相关问题