2014-10-30 7 views
11

मैं एक मच्छर ब्रोकर स्थापित करने की कोशिश कर रहा हूं जो एसएसएल/टीएलएस का उपयोग करके एन्क्रिप्ट किया गया है। मैं क्लाइंट प्रमाणपत्र उत्पन्न नहीं करना चाहता हूं। मैं सिर्फ एक एन्क्रिप्टेड कनेक्शन चाहता हूँ।आप एन्क्रिप्टेड मच्छर ब्रोकर को ऐसे वेबपृष्ठ की तरह कैसे सेट करते हैं जिसमें https है?

मैन पेज केवल उन सेटिंग्स को वर्णित करता है जो उपलब्ध हैं, जिनकी आवश्यकता नहीं है और उनका उपयोग कैसे किया जाता है।

कौन सी सेटिंग्स की आवश्यकता है और आप उन्हें कैसे सेट करते हैं?

मैं mosquitto का उपयोग 1.3.5

उत्तर

16

वहाँ एक छोटा सा गाइड यहाँ है, लेकिन यह बहुत ज्यादा नहीं कहना है: http://mosquitto.org/man/mosquitto-tls-7.html

आप इन निर्धारित करने की आवश्यकता: certfile keyfile

CAFile वे ऊपर दिए गए लिंक में कमांड के साथ उत्पन्न किया जा सकता है। mosquitto कहते

listener 8883 
cafile /etc/mosquitto/certs/ca.crt 
certfile /etc/mosquitto/certs/hostname.localdomain.crt 
keyfile /etc/mosquitto/certs/hostname.localdomain.key 

तो Unable to load server key file इसका मतलब है कि उपयोगकर्ता जो mosquitto चल रहा है नहीं करता है: स्क्रिप्ट चलाने और config बदल रहा है यह कुछ इस तरह दिख सकता है के बाद https://github.com/owntracks/tools/blob/master/TLS/generate-CA.sh

: लेकिन आसान इस स्क्रिप्ट का उपयोग करने के लिए है फ़ाइल को पढ़ने की अनुमति है। यहां तक ​​कि यदि आप इसे रूट के रूप में शुरू करते हैं तो भी ब्रोकर दूसरे उपयोगकर्ता के रूप में शुरू हो सकता है, उदाहरण के लिए मच्छर। इसे हल करने के लिए उदा। chown mosquitto:root keyfile

ब्रोकर से कनेक्ट करने के लिए ग्राहक को ca.crt-file की आवश्यकता होगी। आप इस की आपूर्ति नहीं है, तो दलाल का कहना है कुछ की तरह:

OpenSSL Error: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

mosquitto_sub आदेश आप --cafile pathToCaCrt उपयोग करने के लिए यह आपूर्ति करने के लिए। Ca.crt को ग्राहकों के साथ वितरित किया जा सकता है और यह सुनिश्चित करेगा कि यह सर्वर वास्तव में सही सर्वर से जुड़ा हुआ है।

--insecure mosquitto_sub का झंडा क्लाइंट को सभी प्रमाण पत्र (जैसे wget या इसी तरह के) को स्वीकार नहीं करता है, यह केवल प्रमाण पत्र को होस्ट करने के लिए अनुमति देता है जो आप आम नाम से कनेक्ट कर रहे हैं। इसलिए आपको यह सुनिश्चित करना चाहिए कि आपके प्रमाणपत्र में ब्रोकर होस्ट सामान्य नाम के रूप में है।

+0

यहां एक आसान गाइड है, जिसे आप संशोधित कर सकते हैं; http://jpmens.net/2013/09/01/installing-mosquitto-on-a-raspberry-pi/ –

4

मच्छर के वेबस्केट एक्सेस को सुरक्षित करने के लिए, उदा। एक आइए एन्क्रिप्ट प्रमाण पत्र का उपयोग कर, अपने कॉन्फ़िग फ़ाइल ऐसा दिखाई दे सकता:

listener 9001 
protocol websockets 
certfile /etc/letsencrypt/live/yourdomain.com/cert.pem 
cafile /etc/letsencrypt/live/yourdomain.com/chain.pem 
keyfile /etc/letsencrypt/live/yourdomain.com/privkey.pem 

सुनिश्चित करें कि फ़ाइलें (mosquitto उपयोगकर्ता है, जो आम है के तहत Mosquitto चलाता है विशेष रूप से डेबियन) Mosquitto द्वारा पठनीय हैं। WebSockets का समर्थन करने के लिए आपको मच्छर 1.4 की आवश्यकता है।

इस WebSocket PAHO जावास्क्रिप्ट क्लाइंट का उपयोग करने के लिए कनेक्ट करने के लिए:

// host and port overwritten at connect 
var mqtt = new Paho.MQTT.Client("yourdomain.com", 9001, ""); 

mqtt.connect({ 
    hosts: [ "wss://yourdomain.com:9001/" ], 
    useSSL: true 
}); 

ध्यान दें कि यह अभी तक किसी भी अभिगम नियंत्रण संकेत नहीं करता है, तो आपके MQTT दलाल सार्वजनिक रूप से सुलभ हो जाएगा। आप भी प्राधिकरण जोड़ना चाह सकते हैं।

+1

बस जोड़ना चाहते हैं .. अगर आप एडब्ल्यूएस ईसी 2 पर हैं, तो आपको अपने इनबाउंड नियमों को सेट करने की आवश्यकता होगी बंदरगाह खोलने के लिए सुरक्षा समूह (इस मामले में 9 001) ... मैं असली बुरा ट्रोल हो गया – Vic

संबंधित मुद्दे