2014-07-08 77 views
1

我正在使用在RPI上運行的MQTT python客戶端。我不是來自Web相關領域的人,但是我需要實現SSL安全性,同時我將一些數據從我的Python客戶端發送到開源MQTT代理。將MQTT數據封裝到SSL證書中並將其發送到MQTT代理

我已經在Python中找到certain package來打開套接字來打包SSL安全。我在Python中有點新鮮感。所以我想了解它是如何工作的,以及如果我們想要實現SSL安全,我們需要做什麼。 This question解釋了很多有關SSl的事情,它是如何發生的。但是如果我需要用python實現它,以及如何在我的RPI上本地安裝SSL證書(我想要一些短的開源SSL證書,因爲我現在正在以本地項目的形式執行此操作)。

I使用下面的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證書?

This link幫助瞭解SSL安全的基礎知識。

回答

3

您可以使用Paho Python client庫來處理MQTT和SSL方面的問題嗎?

訂閱所述test.mosquitto.org測試服務器上的主題和打印消息的簡單的例子接收,支持SSL:

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() 
相關問題