Java 由于kafka使用者代码,未创建SSLContext对象以调用第三方api
我有一个包含Springboot kafka消费代码的api,可以自动使用来自kafka主题的消息。在消费消息之后,它调用在url中包含https的上游API 因此,调用上游api时,我需要SSLConext对象,但当我的api尝试创建SSLContext对象时,给出以下给定错误: java.security.KeyStoreException:访问信任库时出现问题java.io.IOException:密钥库被篡改或密码不正确 位于sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:74) 位于javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:250) 位于org.apache.http.ssl.SSLContextBuilder.loadTrustMaterial(SSLContextBuilder.java:109) 位于com.rbc.fraud.fid.listener.AutoActionConsumerListener.getHttpClientInstance(AutoActionConsumerListener.java:157) 位于com.rbc.fraud.fid.listener.AutoActionConsumerListener.ConsumerAutoactionServiceMsg(AutoActionConsumerListener.java:87) 我正在使用Restemplate调用上游api。 我正在使用正确的密钥库文件和密码,但它仍然给出了错误 注意:当我评论kafka消费代码时,它工作正常,创建SSLContext对象,并且能够成功调用上游API 我正在使用Springboot ConsumerFactory、ConcurrentKafkalListenerContainerFactory、@KafkalListener来使用来自kafka主题的消息。 在我的代码中还实现了kerberos身份验证 卡夫卡消费代码运行良好,并使用这些消息。当我试图创建SSLConext对象来调用上游api时,它给出了一个错误Java 由于kafka使用者代码,未创建SSLContext对象以调用第三方api,java,apache-kafka,Java,Apache Kafka,我有一个包含Springboot kafka消费代码的api,可以自动使用来自kafka主题的消息。在消费消息之后,它调用在url中包含https的上游API 因此,调用上游api时,我需要SSLConext对象,但当我的api尝试创建SSLContext对象时,给出以下给定错误: java.security.KeyStoreException:访问信任库时出现问题java.io.IOException:密钥库被篡改或密码不正确 位于sun.security.ssl.TrustManagerFa
我在这一点上陷入了困境,没有得到任何解决方案。您正在初始化ConsumerFactory设置ssl.truststore.password变量吗?是的,我正在使用System.setProperty(“javax.net.ssl.trustStorePassword”,trustStorePassword);您正在初始化RestTemplate吗?您可以添加这两种配置吗?SSLContext SSLContext=SSLContextBuilder.create().loadKeyMaterial(新文件(getClass().getClassLoader().getResource(“keystoreName.jks”).getFile(),“keyStorePassword.ToCharray(),“keyStorePassword.ToCharray()).loadTrustMaterial(acceptingTrustStrategy).useProtocol(“TLS”).build();CloseableHttpClient httpClient=HttpClientBuilder.create().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()).build();HttpComponents客户端HttpRequestFactory rf=新的HttpComponents客户端HttpRequestFactory(httpClient);RestTemplate RestTemplate=新的RestTemplate(rf);sslContextObjectCreationStatus=sslContextObjectCreationStatus+“RestTemplate对象状态:”+RestTemplate;ResponseEntity fmAlertRespEntity=restTemplate.exchange(“url”,HttpMethod.POST,新的HttpEntity(对象),String.class);