当前位置: 首页 > 知识库问答 >
问题:

HTTPS上的RabbitMQ+Web STOMP+JavaScript客户端出错

郭俊拔
2023-03-14
[
  {rabbit, [ 
             {ssl_listeners, [5671] }, 
             {ssl_options, [ 
               {cacertfile,             "/etc/rabbitmq/ssl/ca/cacert.pem" },
               {certfile,               "/etc/rabbitmq/ssl/server/rabbitmq.cert.pem" },
               {keyfile,                "/etc/rabbitmq/ssl/server/rabbitmq.key.pem" },
               {verify,                 verify_peer},
               {fail_if_no_peer_cert,   false}]},
             {loopback_users, []}
  ]},
  {rabbitmq_web_stomp, [ 
                         {ssl_config, [
                           {port,       15671},
                           {backlog,    1024},
                           {certfile,   "/etc/rabbitmq/ssl/ca/cacert.pem"},
                           {keyfile,    "/etc/rabbitmq/ssl/server/rabbitmq.cert.pem"},
                           {cacertfile, "/etc/rabbitmq/ssl/server/rabbitmq.key.pem"},
                           {password,   "changeme"}
                         ]}
                      ]}
].

Dockerfile公开以下端口:

EXPOSE 5671 61613 61614 15671 15672 15674

和docker-compose.yml来设置RabbitMQ容器:

  rabbitmq-server:
    build: rabbitmq-ssl
    image: gprevost/rabbitmq-ssl:latest
    ports:
      - "5671:5671"
      - "61613:61613"
      - "61614:61614"
      - "15671:15671"
      - "15672:15672"
      - "15674:15674"

运行容器时,在端口15672上可以使用Rabbit Management,并且可以访问URL http://192.168.99.100:15674/ws、http://192.168.99.100:15674/stomp和http://192.168.99.100:15674/stomp/info。通过HTTPS的相同URL不起作用。

    <script src="//cdnjs.cloudflare.com/ajax/libs/sockjs-client/0.3.4/sockjs.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>

<script th:fragment="script" th:inline="javascript" type="text/javascript">

    $(document).ready(function(e) {
        var ws = new SockJS("https://192.168.99.100:15674/stomp");
        var client = Stomp.over(ws);
    });

</script>

sockjs.min.js:27 GET https://192.168.99.100:15674/stomp/info net::err_connection_closed

你知道我哪里做错了吗?我不是Web Sockets或STOMP的专家,也不是Erlang开发人员,这使得很难完全理解错误。如有任何帮助,不胜感激!

在RabbitMQ服务器端,以下是该请求的日志,导致连接关闭:

rabbitmq-server_1=错误报告====20-Jun-2016::05:59:03===

rabbitmq-server_1在节点rabbit@4391A6Fed075的进程<0.27747.0>中出现错误,退出值为:

rabbitmq-server_1{function_clause,

rabbitmq-server_1[cowboy_router,cowboy_handler],

rabbitmq-server_1 false,

rabbitmq-server_1[{listener,http},

rabbitmq-server_1 Fun,{},

rabbitmq-server_1“//cdn.jsdelivr.net/sockjs/1.0.3/sockjs.min.js”,

rabbitmq-server_1 false,true,5000,25000,131072,

rabbitmq-server_1 113,100,140,128,201,104,90,3,39,96,30,35,45,2,6,1,46,227,175,146,

rabbitmq-server_1 0,0,20,192,10,192,20,0,57,192,9,192,19,0,51,0,53,0,47,0,10,86,0,1,

rabbitmq-server_1 0,0,76,255,1,0,1,0,0,0,23,0,0,0,35,0,0,0,5,0,5,1,0,0,0,51,116,0,0,

rabbitmq-server_1 116,112,47,49,46,49,117,80,0,0,0,11,0,2,1,0,0,10,0,8,0,6,0,29,0,

rabbitmq-server_1 23,0,24>>],

rabbitmq-server_1[{file,“src/cowboy_protocol.erl”},{line,168}]}]}

如果有人能帮我把这件事弄清楚,提前谢谢你。

共有1个答案

翁心思
2023-03-14

当您使用ssl时,端口是另一个与HTTP不同的端口。

您可以使用对我有效的以下步骤进行配置

http://www.gettingcirrius.com/2013/01/configuring-ssl-for-rabbitmq.html

 类似资料:
  • 问题内容: 如何使用Jersey客户端API将GET请求发送到运行HTTPS协议的服务器。我可以使用任何示例代码吗? 问题答案: 这样构建您的客户 从此博客文章中窃取了更多详细信息:http : //blogs.oracle.com/enterprisetechtips/entry/consumption_restful_web_services_with 有关设置证书的信息,请参见以下已很好回答

  • 我想向https服务器发送POST请求并获得响应。下面是我在curl中所做的,它工作得很好。 这是我在围棋中尝试的代码片段。 程序挂起在最后一行,错误消息为 我觉得我的连接建立代码有问题,而不是服务器的问题,因为服务器与curl完美地工作。

  • 客户端导出指的是不需要提交数据到导出服务器,直接在浏览器上可以将图表导出为常见图片文件或 PDF 文档。以下情况非常适合使用客户端导出: 不希望将图表数据或图表配置发送到我们的导出服务器 希望省去自己配置导出服务器 不需要在低版本 IE (IE9及以下)浏览器上使用导出功能 在线试一试 客户端导出功能模块使用现代浏览器技术来完成相关的功能,因此某些功能在低版本的浏览器上是无法正常使用的,对于不支持

  • 问题内容: 我还很陌生,对于使用证书进行身份验证时客户端应该显示的内容有些困惑。 我正在编写一个Java客户端,该客户端需要对POST特定对象进行简单的数据处理URL。那部分工作正常,唯一的问题是应该完成。该部分相当容易处理(无论是使用Java的内置HTTPS支持还是使用Java的内置支持),但是我一直坚持使用客户端证书进行身份验证。我注意到这里已经存在一个非常类似的问题,我还没有尝试使用我的代码

  • Erlang RabbitMQ客户端无法工作...(http://www.RabbitMQ.com/erlang-client-user-guide.html) 以下是我采取的步骤。 已创建模块amqp_example.erl 已创建deps文件夹 将rabbit-common和amqp_client放在deps文件夹中 使用erl_libs=deps erlc-o ebin amqp_examp

  • 问题内容: 我正在使用Java 6,并尝试使用客户端证书针对远程服务器创建一个。 服务器正在使用自签名的根证书,并且要求提供受密码保护的客户端证书。我已将服务器根证书和客户端证书添加到在中找到的默认Java密钥库中。密钥库文件的名称似乎表明不应将客户端证书放入其中? 无论如何,将根证书添加到此存储解决了臭名昭著的问题 但是,我现在停留在如何使用客户端证书上。我尝试了两种方法,但都无济于事。 首先,