如何在ssl中激活mq

2023-11-23

我正在尝试通过 jms (activemq) 发送消息,但我希望它采用 ssl 协议。 目前它实际上可以在 tcp 中运行。

我使用 jndi,带有一个虚拟主题和 2 个队列。有人可以帮助我吗,我尝试了这个,但我卡住了,服务器无法启动:

http://activemq.apache.org/how-do-i-use-ssl.html

thx

编辑:日志显示:“对实体“needClientAuth”的引用必须以“;”结尾分隔符。”


我会回答我自己的问题:

首先在 ..../apache-activemq-5.11.1/conf/activemq.xml 里面:

<transportConnectors>
  <transportConnector name="ssl" uri="ssl://0.0.0.0:61617?trace=true&amp;needClientAuth=true"/>
</transportConnectors>

不要忘记&(没有空格)这就是服务器端阻塞的原因。在activemq页面上没有写。也不要忘记打开您的端口。这里 (61617)

仍在 activemq.xml 内

<sslContext>
     <sslContext keyStore="file:${activemq.base}/conf/amq-server.ks" 
                 keyStorePassword="PASSWORD" 
                 trustStore="file:${activemq.base}/conf/amq-server.ts" 
                 trustStorePassword="PASSWORD" />
  </sslContext>

重新启动JMS;这次应该可以了。现在您的服务器端已经正常了,让我们开始客户端吧。

我已经在 activemq ..../apache-activemq-5.11.1/conf 中完成了此操作:(遵循所要求的内容、名称、通行证等...)。

## Create a keystore for the broker SERVER
$ keytool -genkey -alias amq-server -keyalg RSA -keysize 2048 -validity 90 -keystore amq-server.ks

## Export the broker SERVER certificate from the keystore
$ keytool -export -alias amq-server -keystore amq-server.ks -file amq-server_cert

## Create the CLIENT keystore
$ keytool -genkey -alias amq-client -keyalg RSA -keysize 2048 -validity 90 -keystore amq-client.ks

## Import the previous exported broker's certificate into a CLIENT truststore
$ keytool -import -alias amq-server -keystore amq-client.ts -file amq-server_cert

## If you want to make trusted also the client, you must export the client's certificate from the keystore
$ keytool -export -alias amq-client -keystore amq-client.ks -file amq-client_cert

## Import the client's exported certificate into a broker SERVER truststore
$ keytool -import -alias amq-client -keystore amq-server.ts -file amq-client_cert

然后我在帮助下下载了https://winscp.net/eng/index.php我的“amq-client.ts”和“amq-client.ks”从我的服务器到我的PC(我在Windows上开发,在Linux上开发服务器)。

我在 eclipse 中使用这两个文件作为源。 (我不会解释如何做)。

最后在 Eclipse 中我只需要更改一件事,我必须用 ActiveMQSslConnectionFactory 替换 QueueConnectionFactory:

所以我删除了

QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx
                    .lookup("jms/ConnectionFactory");

取而代之的是:

ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(url);
            try {
                connectionFactory.setTrustStore(CLIENT_TS_FILE);
                connectionFactory.setTrustStorePassword("PASSWORD asked while TS file made");
                connectionFactory.setKeyStore(CLIENT_KS_FILE);
                connectionFactory.setKeyStorePassword("PASSWORD asked while KS file made");
            } catch (Exception e) {
                throw new MotorException(
                        "JMS Connection Failed (Trust store or key store weren't found) : ",
                        e);
            }

互联网上的信息很少,至少对于 activemq 和 ssl 来说,它可能会对某人有所帮助。

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

如何在ssl中激活mq 的相关文章

随机推荐

  • Jquery 正则表达式验证

    我想检查输入字段是否具有 模式 属性 如果是 则针对所述模式执行正则表达式检查 我知道 HTML5 已经完成了这一操作 但我想自己处理该事件 我收到此错误 未捕获的类型错误 对象 a zA Z 没有方法 测试 Check Perform R
  • 在主视图控制器的自定义单元格内使用 UIButton 中的 IBAction

    我创建了一个带有自己的 m h 和 xib 文件的自定义单元 在单元格中 我有一个 UIButton 已添加到 IB 中的 xib 中 我可以从这个自定义单元格的 m 中的 UIButton 接收 IBAction 但实际上 我想将该按钮按
  • Android - 获取计时器小部件的时间

    如何从天文台表获取时间 我尝试了 getText getFormat getBase 等 但它们都不起作用 示例代码片段 Chronometer t Chronometer findViewById R id toptime long ti
  • Object.toString 和 Object.prototype.toString 之间的不同

    我们可以用Object prototype toString call foo 检测对象类 foo 的类型 并且效果很好 但为什么Object toString call throw TypeError Function prototype
  • 日期时间选择器验证

    我很抱歉发布这个问题 因为它可能对所有人来说都很愚蠢 但我没有得到确切的解决方案 问题是 我的项目中有一个日期时间选择器 它位于表单中的 3 个文本框之后 如果文本框中没有输入任何文本并在提交时输入 它会给出一条消息 验证 表明数据将被进入
  • 当属性达到目的时,标记接口需要什么?

    我有点困惑 标记接口 Vs 的目的 属性 他们的目的在我看来是一样的 如果我错了 请原谅我 谁能解释一下它们的目的有何不同 以下是两者的一些优点 标记接口 使用动态类型检查更容易检查 对象是 IMarker 允许未来的功能和数据可扩展性 即
  • Logback 中的条件功能如何工作?

    我使用这个 logback 配置文件
  • div 末尾的淡入文本?

    是否可以使用 CSS 在 div 末尾附近水平淡入文本 例如这样 CSS 渐变和rgba会做这个工作 Demo 扩展文本版本 更新 div position relative display inline block div span di
  • 如何处理AsyncTask失败

    有没有特定的方法来处理 AsyncTask 中的失败 据我所知 唯一的方法是使用任务的返回值 如果可能的话 我希望能够提供有关失败的更多详细信息 并且 null 并不是很冗长 理想情况下 它会提供一个 onError 处理程序 但我认为它没
  • 从 double 中删除尾随零

    我想删除所有尾随零 而不截断或舍入数字 如果没有 例如 该数字可能类似于12 0 在这种情况下 应删除尾随零 但这个数字也可能是某种东西almost非理性的 比如12 9845927346958762 一直到屏幕边缘 有没有办法设置 Dec
  • IPython 4 shell 不适用于 Sublime REPL

    我在从 Sublime REPL 包运行 IPython shell 时遇到问题 这是我得到的 C Anaconda lib site packages IPython config py 13 ShimWarning The IPytho
  • MVC2:无法使用 TextBoxFor 更改名称?

    我想手动定义文本框的 id 和名称 如下所示 但只改变了id 没有改变name属性 为什么呢
  • 如何在Jquery中将delay()与show()和hide()一起使用

    我该如何使用delay with show and hide 在 Jquery 中 Pass a duration to show and hide 当提供持续时间时 show 成为一种动画方法 E g element delay 1000
  • 从 asp.net web api post 操作重定向

    我对 ASP NET 4 0 Web API 非常陌生 我们可以在 POST 操作结束时重定向到另一个 URL 吗 例如 Response Redirect url 实际上我从 MVC 应用程序上传文件 比如说www abcmvc com
  • 在 Windows 网络中启动远程进程

    我有几台从机和一台主机 它们一起运行分布式应用程序 每台从属机器上的进程都必须具有 GUI 和网络访问权限 我认为这将被称为交互式进程 为了便于使用 如果主机可以启动 停止这些从机上的进程 那就太好了 我的第一个想法是使用 WMI 和 Wi
  • Jenkins 和 Git - 如何获取提交者的名字?

    我正在尝试将更多 GIT 提交信息放入 HipChat 房间 我看到有很多 GIT 变量可以在 jenkins 中使用 我正在执行作业的执行外壳步骤 这些工作 echo GIT BRANCH echo GIT URL echo GIT CO
  • 获取接收者的意图过滤器

    我正在尝试获取处理的接收者列表android intent action BOOT COMPLETED用于其他应用程序 我只能通过以下方式获取具有该操作的应用程序 final PackageManager pm getPackageMana
  • 从 strtok() 获取零长度字符串

    我有一个 CSV 文件 其中包含以下数据 value name test etc 我试图通过使用来分割strtok string 但是 该文件可以包含零长度数据 如下所示 value test etc which strtok 跳过 有什么
  • 如何在reactjs中的map函数内部进行映射

    我有我的表格视图 而且我有正在完善显示的 posfields 使用映射函数 但我的问题是 当我尝试在 posfields 映射函数内映射 td 时 它会抛出错误 headers of undefined this POSFields map
  • 如何在ssl中激活mq

    我正在尝试通过 jms activemq 发送消息 但我希望它采用 ssl 协议 目前它实际上可以在 tcp 中运行 我使用 jndi 带有一个虚拟主题和 2 个队列 有人可以帮助我吗 我尝试了这个 但我卡住了 服务器无法启动 http a