gpt4 book ai didi

spring-amqp - RabbitMQ SSL 连接与 spring-amqp 1.4.3

转载 作者:行者123 更新时间:2023-12-05 01:47:16 34 4
gpt4 key购买 nike

我正在尝试通过 SSL 连接到 RabbitMQ。我遵循了此处链接的 RabbitMQ SSL 文档 https://www.rabbitmq.com/ssl.html根据 RabbitMQ SSL 文档,由于已知漏洞,不推荐使用 SSLv3 和 TLSv1 进行连接。因此,我按照说明在 RabbitMQ 上禁用了这些协议(protocol)。

我正在使用 spring-amqp 1.4.3 连接到 RabbitMQ。请在下面找到代码片段

            ApplicationContext context =
new GenericXmlApplicationContext("classpath:/testConfig/testrabbit-context.xml");
RabbitTemplate template = context.getBean(RabbitTemplate.class);
MessageProperties messageProperties = new MessageProperties();
org.springframework.amqp.core.Message amqpMessage = new org.springframework.amqp.core.Message(
"Test".getBytes(), messageProperties);
String routingKey = "TEST.businessevent.route";
template.send(routingKey, amqpMessage);

请在下面找到我的配置

        <rabbit:connection-factory id="rabbitConnectionFactory"
connection-factory="clientConnectionFactory"
host="localhost"
port="5671"
username="username"
password="password"
virtual-host="test_host" />

<rabbit:admin connection-factory="rabbitConnectionFactory" />

<rabbit:template id="rabbitTemplate"
connection-factory="rabbitConnectionFactory" exchange="test_topic" />

<rabbit:topic-exchange name="test_topic" durable="true" />

<bean id="clientConnectionFactory"
class="org.springframework.amqp.rabbit.connection.RabbitConnectionFactoryBean">
<property name="useSSL" value="true" />
<property name="sslPropertiesLocation" value="/testconfig/rabbitSSL.properties"/>

</bean>

属性文件rabbitSSL.properties如下

    keyStore=file:/client/keycert.p12
trustStore=file:/lib/security/rabbitStore
keyStore.passPhrase=testpassword
trustStore.passPhrase=testpassword

但是,当我使用上面的代码和配置通过 SSL 连接到 RabbitMQ 时,我收到一个致命警报:protocol_version。当我查看 Spring 用于连接到 RabbitMQ 的 org.springframework.amqp.rabbit.connection.RabbitConnectionFactoryBean 类时,我可以看到该协议(protocol)似乎被硬编码为 SSLv3。

                SSLContext context = SSLContext.getInstance("SSLv3");
context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
this.connectionFactory.useSslProtocol(context);

如果我不在 RabbitMQ 上禁用 SSLv3,此代码可以正常工作。但是我需要使用 Tlsv1.2 连接到 RabbitMQ。我可以使用 Spring amqp 1.4.3 来做到这一点,还是需要使用其他版本。感谢您为我提供解决此问题的任何帮助。

最佳答案

我打开了一个JIRA Issue为此。

与此同时,RabbitConnectionFactoryBean 只是一个方便的类,可以使用默认值使底层连接工厂的配置更加“Spring 友好”。

相反,您可以在自己的代码中执行此初始化(可能使用使用 Java 配置的 @Bean 声明)。

关于spring-amqp - RabbitMQ SSL 连接与 spring-amqp 1.4.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903745/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com