RabbitMQ SSL 与 Apring AMQP 1.4.3 连接

2023-12-01

我正在尝试通过 SSL 连接到 RabbitMQ。我已按照[此处}(https://www.rabbitmq.com/ssl.html)链接的 RabbitMQ SSL 文档进行操作。

根据 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

但是,当我使用上述代码和配置通过 SSL 连接到 RabbitMQ 时,我收到致命警报:protocol_version。

当我看着org.springframework.amqp.rabbit.connection.RabbitConnectionFactoryBeanSpring 用于连接到 RabbitMQ 的类,我可以看到该协议似乎被硬编码为 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 来做到这一点还是需要使用其他版本。

感谢您为我提供的有关此问题的任何帮助。


在搜索 RabbitMQ 远程访问时,我遇到了下面的 Springapplication.properties可以在 Spring 中完成的配置设置来配置 RabbitMQ 连接。

https://www.oodlestechnologies.com/blogs/Connect-to-SSL-enabled-RabbitMQ-server-Springboot/

spring.rabbitmq.host=hostURL
spring.rabbitmq.port = hostPort
spring.rabbitmq.username = username
spring.rabbitmq.password = password
spring.rabbitmq.virtual-host=virtualHost
spring.rabbitmq.ssl.enabled=true
spring.rabbitmq.ssl.algorithm=TLSv1.2

https://www.baeldung.com/spring-remoting-amqp#2-configuration

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RabbitMQ SSL 与 Apring AMQP 1.4.3 连接 的相关文章

随机推荐

  • Oracle:发送 JMS 消息的 Java 存储过程

    我正在尝试将点对点 JMS 消息从 Oracle 数据库存储过程发送到 java 应用程序 这两个 点 位于不同的机器上 我已确认它们可以通过 ping 相互通信 我创建了一个 java 应用程序 能够成功地从应用程序服务器内的队列中取出消
  • Android Studio 中未显示 Windows 的构建选项

    我使用的是 Flutter Desktop 的最新稳定版本 并且已经安装了 Visual Studio 2022 但仍然没有显示 Windows 选项 我还需要在稳定版本中运行以下命令吗 flutter config enable
  • 删除 NaN 行在 pandas 中不起作用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我有一个大约 7k 行和 4 列的文件 很多单元格都是空的 我尝试使用许多 pandas 函数删除它们 但似乎没有任何效果 我尝试过的功能和代码如下 我尝试过的 df df
  • 为什么 GetProcAddress 不起作用?

    首先 我创建一个简单的 dll 名为SimpleDll dll 其头文件 SimpleDll h ifdef MYLIBAPI else define MYLIBAPI declspec dllimport endif MYLIBAPI i
  • javascript 中函数闭包前是否需要分号?

    我想知道这是否是一个编译器错误 或者这就是它应该的方式 使用node js v10 15 3 此代码会抛出错误 var x x false function y console log foo 但这段代码工作正常 var x x false
  • 隐藏/不可见的 Ajax 请求?

    是否可以编写和创建一个无法被 Firefox 中的 Firebug 插件捕获的 JavaScript Ajax 请求 我问这个问题是因为我可以在 Facebook 上看到没有正在进行的 Ajax 请求 但是当我从另一个帐户发送消息时 顶部的
  • 2D CUDA 中值滤波器优化

    我在 CUDA 中实现了一个 2D 中值滤波器 整个程序如下所示 include cuda runtime h include cuda runtime api h include device launch parameters h in
  • MiniZinc 数组中字符串值的索引

    问题 给定一个 MiniZinc 字符串数组 int numStats set of int Stats 1 numStats array Stats of string statNames 使用从 MiniZinc 数据文件加载的数据 n
  • 无法安装 NuGet 包 - 500 内部服务器错误

    这对我来说毫无意义 NuGet 以前工作正常 但现在当我尝试安装软件包时它会抛出服务器错误 我已经卸载并重新安装了最新的 NuGet 但仍然没有成功 PM gt Install Package EntityFramework Install
  • 为什么 LocationManager 没有 LastKnown 位置?

    我想要用户的位置 并且在该用户自己导航后也只需要一次 locationManager LocationManager this getSystemService LOCATION SERVICE location locationManag
  • 如何在 Windows 7 上安装 Windows Phone 8 SDK

    我在 Windows 7 上设置了所有工作区和所有内容 但我也想开发 Windows Phone 8 但正如 Microsoft 网站所述 它无法安装在 Windows 7 上 有人知道如何在 Windows 7 上安装吗 我找到了一个破解
  • iOS Ionic 应用程序中的链接无法立即打开

    我的应用程序的视图之一中有一些链接 Sharing 添加到日历 打开外部链接 在我用来测试应用程序的 iPhone 上 1 和 2 可以工作 但只有当我按下主页按钮然后返回到应用程序时 才会出现共享 日历对话框 谁能建议什么可能导致这个 我
  • 使用对象类型的字符串名称在 C# 中进行类型转换

    我有以下代码 应该很容易理解 public class Foo public void FooHasAMethod Console WriteLine it is me foo public class Bar public Foo Foo
  • sh 按匹配的列名值分解 CSV 文件,同时保留标题

    我有一个目录 其中包含来自表导出的许多 CSV 文件 tblA csv A B C 1 1 1 1 2 2 2 2 2 3 3 3 tblB csv C D A 1 1 1 1 2 2 2 2 2 3 3 3 为了破坏文件我找到了这个脚本
  • 将 Map[String, Double] 转换为 java.util.Map[String, java.lang.Double]

    我认为我们可以依靠隐式转换来转换scala Double to java lang Double 所以我尝试了以下方法 import scala collection JavaConverters object Main extends A
  • 如何从我的 iPad 应用程序打开设置 (Objective-C) [重复]

    这个问题在这里已经有答案了 我尝试过使用 UIApplication sharedApplication openURL NSURL URLWithString prefs root General path Network 以及您在这里看
  • 从 JAR 中执行 python 文件

    我试图弄清楚如何引用 python 文件 以便我可以在 Java GUI Jar 中执行它 它需要是一个可移植的解决方案 因此使用绝对路径对我来说不起作用 我在下面列出了我的项目结构 并包含了我如何尝试执行 python 脚本的代码 我已经
  • 如何修复高图表中隐藏的数据标签?

    请看一下JSFIDDLE 此处 绿色条不显示任何值 我知道添加overflow none crop false将显示该值 但它超出了绘图区域 有时对于较大的数字 它与标题重叠 我想 仅 在条内获取绿色条值 而不是隐藏该值 对于内部的特定列
  • 淘汰打字稿扩展器

    有人可以发布一个在打字稿中扩展可观察值的示例吗 淘汰赛延长器 http knockoutjs com documentation extenders html 我从2013年3月6日开始使用这个版本的knockout d tshttps g
  • RabbitMQ SSL 与 Apring AMQP 1.4.3 连接

    我正在尝试通过 SSL 连接到 RabbitMQ 我已按照 此处 https www rabbitmq com ssl html 链接的 RabbitMQ SSL 文档进行操作 根据 RabbitMQ SSL 文档 由于已知漏洞 不建议使用