繁体   English   中英

将MQTT数据包装到SSL证书中,然后将其发送到MQTT代理

[英]Wrapping MQTT data in SSL certificate while sending it to MQTT broker

我正在使用RPI上运行的MQTT python客户端。 我不是Web相关领域的专家,但是我需要实现SSL安全性,同时将一些数据从python客户端发送到开源MQTT代理。

我在python中找到了某些软件包 ,用于在打开套接字时包装SSL安全性。 我是python的新手。 因此,我想了解它的工作原理以及我们要实现SSL安全性时需要做的事情。 这个问题解释了很多关于SS1及其发生方式的信息。 但是,如果我需要使用python来实现它,以及如何在RPI上本地安装SSL证书(我希望现在缺少一些本地SSL证书,因为我现在作为本地项目正在这样做)。

我使用下面的python代码打开SSL套接字,然后通过443端口连接到www.google.com。

import socket
import ssl

s_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(s_, ca_certs='/usr/local/lib/python2.7/dist-packages/requests/cacert.pem',cert_reqs=ssl.CERT_REQUIRED)
s.connect(('www.google.com', 443))
s.write("""GET / HTTP/1.1\r
Host: www.google.com\r\n\r\n""")
d=s.read()
print(d)
s.close()

我在控制台上得到了这个输出

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: https://www.google.co.in/?gfe_rd=cr&ei=PkW8U8SsPOqK8Qfwt4DYAw
Content-Length: 262
Date: Tue, 08 Jul 2014 19:23:42 GMT
Server: GFE/2.0
Alternate-Protocol: 443:quic

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.co.in/?gfe_rd=cr&amp;ei=PkW8U8SsPOqK8Qfwt4DYAw">here</A>.
</BODY></HTML>

但是,我仍然想问或理解(我从可用资源中学习的内容)谁在打开SSL套接字需要拥有SSL证书,我们正在执行将SSL证书发送到服务器的那部分工作,或者正在由openssl库完成。 我也想确认openssl提供openssl正在使用并发送到服务器的SSL证书吗?

该链接对理解SSL安全性的基础有所帮助。

您可以使用Paho Python客户端库来处理问题的MQTT和SSL方面吗?

一个简单的示例,该示例在SSL支持下订阅test.mosquitto.org测试服务器上的主题并打印收到的消息:

import paho.mqtt.client as paho

def on_message(clnt, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

mqttc = paho.Client()
mqttc.on_message = on_message
mqttc.tls_set("mosquitto.org.crt") # http://test.mosquitto.org/ssl/mosquitto.org.crt
mqttc.connect("test.mosquitto.org", 8883)
mqttc.subscribe("bbc/#")
mqttc.loop_forever()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM