Я пытаюсь подключиться к RabbitMQ через SSL. Я следил за документацией RabbitMQ SSL, указанной здесь https://www.rabbitmq.com/ssl.html Согласно документации RabbitMQ SSL, подключение с использованием SSLv3 и TLSv1 не рекомендуется из-за известных уязвимостей. В связи с этим я отключил эти протоколы на RabbitMQ в соответствии с инструкциями.
Я использую 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
Однако, когда я использую приведенный выше код и конфигурацию для подключения к RabbitMQ через SSL, я получаю фатальное предупреждение: protocol_version. Когда я посмотрел на класс org.springframework.amqp.rabbit.connection.RabbitConnectionFactoryBean, который Spring использует для подключения к RabbitMQ, я увидел, что протокол, похоже, жестко закодирован для SSLv3.
SSLContext context = SSLContext.getInstance("SSLv3");
context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
this.connectionFactory.useSslProtocol(context);
Этот код отлично работает, если я не отключу SSLv3 на RabbitMQ. Однако мне нужно подключиться к RabbitMQ, используя Tlsv1.2. Могу ли я сделать это, используя Spring amqp 1.4.3, или мне нужно использовать другую версию. Спасибо за любую помощь, которую вы можете предоставить мне с этой проблемой.