Ошибка подключения к экземпляру RabbitMQ с помощью SSL с использованием Java Spring-BootJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Ошибка подключения к экземпляру RabbitMQ с помощью SSL с использованием Java Spring-Boot

Сообщение Гость »


У меня возникла проблема с подключением моего Java-приложения в Spring-Boog к серверу UAT в AWS, где размещен мой RabbitMQ. У меня есть балансировщик нагрузки, который затем перенаправляет мои запросы на один из экземпляров RMQ.

Я использую SSL для подключения к RabbitMQ и создал файл сертификата .p12 (PKCS12).

Это файл свойств Java-приложения с весенней загрузкой:

spring.rabbitmq.host=rmq-lb.uat.mycompany.com весна.rabbitmq.port=5671 Spring.rabbitmq.username=live_prices Spring.rabbitmq.password=аааа Spring.rabbitmq.virtualHost=my_virtualhost Spring.rabbitmq.ssl.enabled=истина Spring.rabbitmq.ssl.algorithm=TLSv1.2 Spring.rabbitmq.ssl.key-store=путь к классам:/rmq_wr.uat.p12 Spring.rabbitmq.ssl.key-store-password=bbbb ... Если я использую приложение .NET, мне не нужно выполнять никаких дополнительных действий, и я могу подключиться к экземпляру RMQ с помощью этого единственного файла .p12. Кроме того, если я попытаюсь подключиться локально через Docker-контейнер к экземпляру RMQ, это тоже сработает.

Ниже приведен мой класс конфигурации Spring:

@Configuration общественный класс RabbitMQConfig { @Value("${mycompany.rabbitmq.queue}") Строка имя_очереди; @Value("${mycompany.rabbitmq.exchange}") обмен строк; @Value("${mycompany.rabbitmq.routingkey}") частный строковый ключ маршрутизации; @Бин Очередь очередь() { вернуть новую очередь (queueName, true); } @Бин Обмен TopicExchange() { вернуть новый TopicExchange (обмен); } @Бин Привязка привязки (очередь очереди, обмен TopicExchange) { return BindingBuilder.bind(queue).to(exchange).with(routingkey); } @Бин общественный MessageConverter jsonMessageConverter () { вернуть новый Jackson2JsonMessageConverter(); } public AmqpTemplate RabbitTemplate (ConnectionFactory ConnectionFactory) { окончательный RabbitTemplate RabbitTemplate = новый RabbitTemplate (connectionFactory); RabbitTemplate.setMessageConverter(jsonMessageConverter()); вернуть шаблон кролика; } } Вот ошибка, которую я получаю при отладке приложения:

2021-06-10 09:38:19.914 INFO 20056 --- [restartedMain] o.s.a.r.c.CachingConnectionFactory: попытка подключения к: [rmq-lb.uat.mycompany.com:5671] 2021-06-10 09:38:20.145 ОШИБКА 20056 --- [restartedMain] c.r.client.impl.SocketFrameHandler: не удалось подключиться к TLS: не удалось построить путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации к запрошенной цели 2021-06-10 09:38:20.149 INFO 20056 --- [restartedMain] ConditionEvaluationReportLoggingListener: Ошибка запуска ApplicationContext. Чтобы отобразить отчет об условиях, перезапустите приложение с включенной отладкой. 2021-06-10 09:38:20.176 ОШИБКА 20056 --- [restartedMain] o.s.boot.SpringApplication: Ошибка запуска приложения java.lang.IllegalStateException: не удалось выполнить CommandLineRunner в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.run(SpringApplication.java:346) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.5.jar:2.4.5] на com.mycompany.rmqconnector.RMQConnectorApp.main(RMQConnectorApp.java:119) ~[classes/:na] в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~[na:na] в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] в java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] в org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.5.jar:2.4.5] Вызвано: org.springframework.amqp.AmqpIOException: javax.net.ssl.SSLHandshakeException: не удалось построить путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации к запрошенной цели в org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:70) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:602) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:724) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:216) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:2132) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:2105) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.send(RabbitTemplate.java:1049) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:1114) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:1107) ~[spring-rabbit-2.3.6.jar:2.3.6] на com.mycompany.rmq.RabbitMQSender.send(RabbitMQSender.java:26) ~[classes/:na] на com.mycompany.rmqconnector.RMQConnectorApp.givenUsingTimer_whenSchedulingTaskOnce_thenCorrect(RMQConnectorApp.java:99) ~[classes/:na] по адресу com.mycompany.rmqconnector.RMQConnectorApp.lambda$0(RMQConnectorApp.java:60) ~[classes/:na] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:819) ~[spring-boot-2.4.5.jar:2.4.5] ... 10 общих фреймов опущены Вызвано: javax.net.ssl.SSLHandshakeException: не удалось построить путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации к запрошенной цели в java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na] в java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:326) ~[na:na] в java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:269) ~[na:na] в java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:645) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:464) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:360) ~[na:na] по адресу java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) ~[na:na] по адресу java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444) ~[na:na] по адресу java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422) ~[na:na] в java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:183) ~[na:na] по адресу java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:171) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1403) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1309) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:814) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:1184) ~[na:na] в java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81) ~[na:na] в java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142) ~[na:na] в java.base/java.io.DataOutputStream.flush(DataOutputStream.java:123) ~[na:na] в com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:160) ~[amqp-client-5.10.0.jar:5.10.0] в com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:170) ~[amqp-client-5.10.0.jar:5.10.0] на com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:314) ~[amqp-client-5.10.0.jar:5.10.0] в com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1139) ~[amqp-client-5.10.0.jar:5.10.0] в com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1087) ~[amqp-client-5.10.0.jar:5.10.0] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connectAddresses(AbstractConnectionFactory.java:638) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connect(AbstractConnectionFactory.java:613) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:565) ~[spring-rabbit-2.3.6.jar:2.3.6] ... 21 общий кадр опущен Вызвано: sun.security.validator.ValidatorException: не удалось построить путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации к запрошенной цели по адресу java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439) ~[na:na] по адресу java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306) ~[na:na] по адресу java.base/sun.security.validator.Validator.validate(Validator.java:264) ~[na:na] по адресу java.base/sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:313) ~[na:na] по адресу java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:222) ~[na:na] по адресу java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:129) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:629) ~[na:na] ... 44 общих кадра опущены Вызвано: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели. по адресу java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[na:na] по адресу java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[na:na] в java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297) ~[na:na] по адресу java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434) ~[na:na] ... 50 общих фреймов опущены Есть идеи? Спасибо большое!
Изменить 1
Мне удалось заставить это работать в простом Java-приложении, используя Maven и простую клиентскую библиотеку RabbitMQ.

Это код:

char[] keyPassphrase = "bbbb".toCharArray(); KeyStore ks = KeyStore.getInstance("PKCS12"); ks.load(this.getClass().getClassLoader().getResourceAsStream("rmq_wr.uat.p12"), keyPassphrase); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); kmf.init(ks, ключевая фраза); TrustManager[]trustAllCerts = новый TrustManager[]{ новый X509ExtendedTrustManager() { @Override общественный java.security.cert.X509Certificate [] getAcceptedIssuers () {return null; } @Override public void checkClientTrusted(java.security.cert.X509Certificate[] сертификаты, String authType) {} @Override public void checkServerTrusted(java.security.cert.X509Certificate[] сертификаты, String authType) {} @Override public void checkClientTrusted(java.security.cert.X509Certificate[] xcs, строка строки, сокет сокета) выдает исключение CertificateException {} @Override public void checkServerTrusted(java.security.cert.X509Certificate[] xcs, строка строки, сокет сокета) выдает исключение CertificateException {} @Override public void checkClientTrusted(java.security.cert.X509Certificate[] xcs, String string, SSLEngine ssle) выдает исключение CertificateException {} @Override public void checkServerTrusted(java.security.cert.X509Certificate[] xcs, String string, SSLEngine ssle) выдает исключение CertificateException {} } }; SSLContext c = SSLContext.getInstance("TLSv1.2"); c.init(kmf.getKeyManagers(),trustAllCerts, null); Фабрика ConnectionFactory = новая ConnectionFactory(); Factory.setHost(rmqHost); Factory.setPort(rmqPort); Factory.setUsername(rmqUsername); Factory.setPassword(rmqPassword); Factory.setVirtualHost(vhost); Factory.useSslProtocol(c); //factory.enableHostnameVerification(); conn = Factory.newConnection(); канал = conn.createChannel(); Channel.basicPublish("my_exchange", "test", null, "Hello, World".getBytes()); Я считаю, что это как-то связано с опцией TrustStore в файле application.properties

... Spring.rabbitmq.ssl.trust-store=file:/C:/Users/User/Desktop/rmqconnector/src/main/resources/cacerts Spring.rabbitmq.ssl.trust-store-password=changeit Spring.rabbitmq.ssl.trust-store-type=JKS ... и в коде, который я пробовал:

@Бин public CachingConnectionFactory RabbitConnectionFactory (конфигурация RabbitProperties) выдает исключение { ClassPathResource keyStorePath = новый ClassPathResource("rmq_wr.uat.p12"); ClassPathResourcetrustStorePath = новый ClassPathResource("rmquat.jks"); Фабрика RabbitConnectionFactoryBean = новый RabbitConnectionFactoryBean(); если (config.determineHost() != ноль) { Factory.setHost(config.determineHost()); } Factory.setPort(config.determinePort()); если (config.determineUsername() != ноль) { Factory.setUsername(config.determineUsername()); } если (config.determinePassword() != ноль) { Factory.setPassword(config.determinePassword()); } если (config.determineVirtualHost() != ноль) { Factory.setVirtualHost(config.determineVirtualHost()); } // читаем свойства SSL из applicaiton.properties RabbitProperties.Ssl ssl = config.getSsl(); если (ssl.getEnabled()) { Factory.setUseSSL(истина); if (ssl.getAlgorithm() != null) { Factory.setSslAlgorithm(ssl.getAlgorithm()); } //System.out.println("keystore = " + ssl.getKeyStore()); // фабрика.сет Factory.setKeyStore(keyStorePath.getPath()); Factory.setKeyStoreType(ssl.getKeyStoreType()); Factory.setKeyStorePassphrase(ssl.getKeyStorePassword()); Factory.setTrustStore(ssl.getTrustStore()); //factory.setTrustStore(trustStorePath.getPath()); Factory.setTrustStorePassphrase("changeit"); Factory.setTrustStoreType("JKS"); //factory.setSkipServerCertificateValidation(true); } фабрика.afterPropertiesSet(); CachingConnectionFactory ConnectionFactory = новый CachingConnectionFactory(factory.getObject()); ConnectionFactory.setAddresses(config.determineAddresses()); //connectionFactory.setPublisherConfirms(config.isPublisherConfirms()); ConnectionFactory.setPublisherReturns(config.isPublisherReturns()); if (config.getCache().getChannel().getSize() != null) { ConnectionFactory.setChannelCacheSize(config.getCache().getChannel().getSize()); } if (config.getCache().getConnection().getMode() != null) { ConnectionFactory.setCacheMode(config.getCache().getConnection().getMode()); } if (config.getCache().getConnection().getSize() != null) { ConnectionFactory.setConnectionCacheSize(config.getCache().getConnection().getSize()); } вернуть ConnectionFactory; } но это приводит к следующему исключению:

2021-06-15 20:32:04.345 ОШИБКА 17816 --- [restartedMain] c.r.client.impl.SocketFrameHandler: Ошибка подключения TLS: доверенный сертификат не найден 2021-06-15 20:32:04.355 INFO 17816 --- [restartedMain] ConditionEvaluationReportLoggingListener: Ошибка запуска ApplicationContext. Чтобы отобразить отчет об условиях, перезапустите приложение с включенной отладкой. 2021-06-15 20:32:04.375 ОШИБКА 17816 --- [restartedMain] o.s.boot.SpringApplication: Ошибка запуска приложения java.lang.IllegalStateException: не удалось выполнить CommandLineRunner в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.run(SpringApplication.java:346) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) ~[spring-boot-2.4.5.jar:2.4.5] в org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.5.jar:2.4.5] в eu.rmqconnector.RMQConnectorApp.main(RMQConnectorApp.java:125) ~[classes/:na] в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~[na:na] в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] в java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] в org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.5.jar:2.4.5] Вызвано: org.springframework.amqp.AmqpIOException: javax.net.ssl.SSLHandshakeException: доверенный сертификат не найден в org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:70) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:602) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:724) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:216) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:2132) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:2105) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.send(RabbitTemplate.java:1049) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:1114) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:1107) ~[spring-rabbit-2.3.6.jar:2.3.6] в eu.rmq.RabbitMQSender.send(RabbitMQSender.java:26) ~[classes/:na] в eu.rmqconnector.RMQConnectorApp.givenUsingTimer_whenSchedulingTaskOnce_thenCorrect(RMQConnectorApp.java:105) ~[classes/:na] в eu.rmqconnector.RMQConnectorApp.lambda$0(RMQConnectorApp.java:66) ~[classes/:na] в org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:819) ~[spring-boot-2.4.5.jar:2.4.5] ... 10 общих фреймов опущены Вызвано: javax.net.ssl.SSLHandshakeException: доверенный сертификат не найден. в java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na] в java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:326) ~[na:na] в java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:269) ~[na:na] в java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:645) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:464) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:360) ~[na:na] по адресу java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) ~[na:na] по адресу java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444) ~[na:na] по адресу java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422) ~[na:na] в java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:183) ~[na:na] по адресу java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:171) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1403) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1309) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:814) ~[na:na] по адресу java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:1184) ~[na:na] в java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81) ~[na:na] в java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142) ~[na:na] в java.base/java.io.DataOutputStream.flush(DataOutputStream.java:123) ~[na:na] в com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:160) ~[amqp-client-5.10.0.jar:5.10.0] на com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:314) ~[amqp-client-5.10.0.jar:5.10.0] в com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1139) ~[amqp-client-5.10.0.jar:5.10.0] в com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1087) ~[amqp-client-5.10.0.jar:5.10.0] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connectAddresses(AbstractConnectionFactory.java:638) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connect(AbstractConnectionFactory.java:613) ~[spring-rabbit-2.3.6.jar:2.3.6] в org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:565) ~[spring-rabbit-2.3.6.jar:2.3.6] ... 21 общий кадр опущен Вызвано: sun.security.validator.ValidatorException: доверенный сертификат не найден. по адресу java.base/sun.security.validator.SimpleValidator.buildTrustedChain(SimpleValidator.java:411) ~[na:na] по адресу java.base/sun.security.validator.SimpleValidator.engineValidate(SimpleValidator.java:135) ~[na:na] по адресу java.base/sun.security.validator.Validator.validate(Validator.java:264) ~[na:na] по адресу java.base/sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:313) ~[na:na] по адресу java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:222) ~[na:na] по адресу java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:129) ~[na:na] по адресу java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:629) ~[na:na] ... 44 общих кадра опущены Я перечисляю записи в хранилище ключей следующим образом:

PS C:\Users\User\Desktop\rmqconnector\src\main\resources> keytool -list -keystore .\rmq_wr.uat.p12 -storepass bbbb -storetype PKCS12 Тип хранилища ключей: PKCS12 Поставщик хранилища ключей: SUN Ваше хранилище ключей содержит 1 запись 1, 15 июня 2021 г., PrivateKeyEntry, Отпечаток сертификата (SHA-256): D0:B5:76:... Я также скопировал файл cacerts, чтобы использовать его в качестве TrustStore, но это тоже не работает.

PS C:\Users\User\Desktop\rmqconnector\src\main\resources> keytool -list -keystore .\cacerts -storepasschangeit -storetype PKCS12 Тип хранилища ключей: PKCS12 Поставщик хранилища ключей: SUN Ваше хранилище ключей содержит 93 записи 1, 14 июня 2021 г., PrivateKeyEntry, Отпечаток сертификата (SHA-256): D0:B5:76:... ... .
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»