2016-08-23 21 views
3

python paho mqttクライアントを自分の認証局を使ってブローカーに接続しようとしています。必要なファイルを生成し、RabbitMQブローカを使用するように設定しました。私の考えは、クライアントがサーバーを認証するが、クライアント自体は認証する必要がないということです。python paho mqttクライアント接続によるssl/tlsのエラーが発生しました

  • ca.cert.pem
  • cert.pemを
  • key.pem

は、私はまた、正常に動作するScalaのPAHOのMQTTクライアントを持っているので、これらが正常に動作する必要があります知っています。

現在、私は自分のMacの端末から直接ファイルを実行しています。私は、Python 3.5.2で作成されたvirtuanenvを使用していますが、私はまたTLSv1_1tls_versionを変更しようとした私は、次のエラー

ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645) 

を受けるファイルを実行すると、私は、ファイルsubscribe.py

import paho.mqtt.client as paho 
import ssl 

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

def on_connect(client, userdata, rc): 
     print("Connected with result code "+str(rc)) 
     mqttc.subscribe("foo") 

mqttc = paho.Client() 
mqttc.on_message = on_message 
mqttc.on_message = on_message 
mqttc.tls_set("ca.cert.pem", tls_version=ssl.PROTOCOL_TLSv1_2) 
mqttc.connect("address", 8883, 60) 
mqttc.loop_forever() 

を持っています、TLSv1と完全にそれを残す。 ca.cert.pemsubscribe.pyファイルと同じフォルダにあります

パホWebサイトの例はとてもシンプルなので、私はここで何が欠けていますか?私のpythonクライアントでエラーを受け取るのはなぜですか?

答えて

1

蚊帳クライアントを試しましたか?あなたが遭遇した問題の可能性がたくさんあるので、それを理解する最良の方法は別の方法を試しています。

mosquitto_sub -h address -p 8883 --cafile ca.cert.pem -t "#" -d -v

Dフラグはデバッグメッセージのために、Vフラグが詳細モードです。

mosquittoクライアントがCAに接続できない場合は、試すことができます:

mosquitto_sub -h address -p 8883 --cafile ca.cert.pem -t "#" -d -v --insecure

を安全でないフラグは、サーバーをチェックするCAを無視します。安全でないフラグを追加すると接続が可能になる場合は、CAが間違っている可能性があります。 opensslを使ってそれをデバッグすることができます。

関連する問題