微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jasypt 不适用于 Spring Cloud Stream

如何解决Jasypt 不适用于 Spring Cloud Stream

我正在尝试使用 jasypt 在 yml 文件中为 ssl 密钥库和信任库存储加密密码。注意到 Spring Cloud 流的一个非常奇怪的行为。加密密码适用于 Kafka 流绑定,但不适用于 Apache Kafka 绑定。我检查了普通密码,它正在连接。下面是我的配置:

########## Kafka Streams binder configs ##########
spring.cloud.stream.kafka.streams:
  binder:
    brokers: <brokers>
    configuration:
      security.protocol: SSL
      ssl.endpoint.identification.algorithm:
      ssl.truststore.location: pathToFile/<filename>.jks
      ssl.truststore.password: ENC(lzqSndFB9fy2R+blpqOW2X8BNgZJZX/8)   // working
      ssl.truststore.type: jks
      ssl.keystore.location: pathToFile/<filename>.p12
      ssl.keystore.password: ENC(Sf2xm5Tks2Dok2oPg4mHYqvkkryglhCj)   // working
      ssl.keystore.type: pkcs12

########## Apache Kafka binder configs ##########
spring.cloud.stream.kafka:
  binder:
    brokers: <brokers>
    configuration:
      security.protocol: SSL
      ssl.endpoint.identification.algorithm:
      ssl.truststore.location: pathToFile/<filename>.jks
      ssl.truststore.password: ENC(lzqSndFB9fy2R+blpqOW2X8BNgZJZX/8) // failing,working with plain password
      ssl.truststore.type: jks
      ssl.keystore.location: pathToFile/<filename>.p12
      ssl.keystore.password: ENC(Sf2xm5Tks2Dok2oPg4mHYqvkkryglhCj)  // failing,working with plain password
      ssl.keystore.type: pkcs12

以下是错误

ERROR 16780 --- [           main] o.s.cloud.stream.binding.BindingService  : Failed to create producer binding; retrying in 30 seconds  
org.springframework.cloud.stream.binder.BinderException: Exception thrown while building outbound endpoint
Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Failed to load SSL keystore <keystorefile>.p12 of type pkcs12
    at org.apache.kafka.common.security.ssl.SslEngineBuilder.createSSLContext(SslEngineBuilder.java:160) ~[kafka-clients-2.3.1.jar:na]
    at org.apache.kafka.common.security.ssl.SslEngineBuilder.<init>(SslEngineBuilder.java:102) ~[kafka-clients-2.3.1.jar:na]
    at org.apache.kafka.common.security.ssl.SslFactory.configure(SslFactory.java:93) ~[kafka-clients-2.3.1.jar:na]
    at org.apache.kafka.common.network.SslChannelBuilder.configure(SslChannelBuilder.java:71) ~[kafka-clients-2.3.1.jar:na]
    ... 33 common frames omitted
Caused by: org.apache.kafka.common.KafkaException: Failed to load SSL keystore <keystorefile>.p12 of type pkcs12
    at org.apache.kafka.common.security.ssl.SslEngineBuilder$SecurityStore.load(SslEngineBuilder.java:289) ~[kafka-clients-2.3.1.jar:na]
    at org.apache.kafka.common.security.ssl.SslEngineBuilder.createSSLContext(SslEngineBuilder.java:142) ~[kafka-clients-2.3.1.jar:na]
    ... 36 common frames omitted
Caused by: java.io.IOException: keystore password was incorrect
    at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2068) ~[na:1.8.0_271]
    at java.security.KeyStore.load(KeyStore.java:1445) ~[na:1.8.0_271]
    at org.apache.kafka.common.security.ssl.SslEngineBuilder$SecurityStore.load(SslEngineBuilder.java:286) ~[kafka-clients-2.3.1.jar:na]
    ... 37 common frames omitted
Caused by: java.security.UnrecoverableKeyException: Failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
    ... 40 common frames omitted

Spring Boot 版本 2.2.5.RELEASE,摘自 pom.xml

<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-stream-binder-kafka-streams</artifactId>
</dependency>
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

有人可以帮忙吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。