python-2.7 - 尝试使用 STOMP.py 连接时出现协议(protocol)错误

标签 python-2.7 ssl stomp.py

在我目前的情况下,我正在使用 stomp.py 库 ( http://jasonrbriggs.github.io/stomp.py/stomp.html#module-stomp.connect ) 连接到另一台服务器上的 ActiveMQ 实例。我在 python 2.7 上,当没有配置 SSL 时,连接工作正常。我使用提供的连接方法(1.2)进行连接,除了主机和端口外,还提供以下参数:

  1. ssl_key_file=ssl_key_file
  2. ssl_cert_file=ssl_cert_file
  3. ssl_version=ssl.PROTOCOL_TLSv1_2
  4. use_ssl=True

key 和证书文件是我使用 file open() 方法获得的所述文件中的文本,该方法似乎工作正常。

我尝试过在其他选项中也设置 ssl.SSL_Context 中的上下文。我很确定 ActiveMQ 使用 SSL 并且已经说过协议(protocol)。

当我尝试使用 conn.start() 进行连接时,我收到以下错误:

File "/usr/local/lib/python2.7/dist-packages/stomp/transport.py", line 733, in attempt_connection
tls_context.load_cert_chain(certfile, keyfile, password)
IOError: [Errno 71] Protocol error

我找不到让 stomp.py 使用 SSL 连接的工作示例,所以我找不到执行此操作的方法。

有没有人以前见过这个?

最佳答案

经过相当广泛的搜索后,我自己找到了答案。原来之前需要set_ssl。

conn.set_ssl(for_hosts=[(activemq_url,activemq_port)],key_file=KEYFILE,cert_file=CERTFILE)

您需要在 KEYFILE 和 CERTFILE 中提供一个路径,让 set_ssl 可以使用文件 open() 方法检查和传递内容。

注意:您需要在创建连接之后但 调用 conn.start() 方法之前进行设置!

关于python-2.7 - 尝试使用 STOMP.py 连接时出现协议(protocol)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631014/

相关文章:

python-2.7 - Pandas :一种使用namedtuple列表初始化数据帧的干净方法

security - 具有有限客户端的自签名证书

WordPress 将所有 HTTPS 重定向到 HTTP

python - 使用 stomp.py 时,AMQ_SCHEDULED_DELAY 不会延迟消息

python - ActiveMQ-带有Python STOMP客户端的STOMP + SSL

python - 在Python中存储没有年份的日月

python - 按Python字典中的嵌套字典排序

python - 不那么丑陋但可靠的方法来找到嵌入在字符串中的浮点值而不需要填充?

java - 使用 HttpClient 4 通过 WiFi 进行 HTTPS 身份验证