2017/01/15

AzureでMQTT brokerを立てようとする (3)

そういえば、TLS/SSLって、サーバがはじくためじゃなくて、クライアントがはじくための通信だったような気がする。
サーバがクライアントをはじく場合は、Basic認証とか何とか認証とか、そういうのでやったような記憶が。。。

 

pythonのpaho.mqtt.clientで、tls_insecure_set(True)を呼び、tls_set('xxx.crt', cert_reqs=ssl.CERT_NONE)した。
crtファイルは、前回失敗したものをそのまま使っている。空文字列だとエラーなのだ。

そうすると・・・on_connect()がコールバックされた!
たぶん、まともなやり方ではないのだけど、CRTファイルを指定せずにTLS接続するというのはこういうことじゃないだろうか?
(ストアアプリの場合は、Windowsに登録してあるものを使ったのかもしれん。)

 

Linux上で動かすサンプルも見かけたのだが、そちらは/etc/ssl/certsにあるファイルを指定していた。

This is a simple example showing how to use the [Paho MQTT Python client](https://eclipse.org/paho/clients/python/) to send data to Azure IoT Hub. You need to assemble the rights credentials and configure TLS and the MQTT protocol version appropriately.

そういうのがWindowsにもあれば試すんだけどねー

・・・あ、Bash on Windowsがあった。
lsしてみると、同じ場所にファイルがあったので、pythonのスクリプトと同じ場所にコピーして、tls_insecure_set()を消し、tls_set('ca-certificates.crt')だけにして動かした。

動くやん。


とりあえず、これでpythonのpaho.mqttからAzure Iot HubにMQTT connectまではできたと思う。
ただ、on_connectのコールバックが呼ばれ続けるのよね。。。
Mosquittoのときはそうではなかったので、なんかしてやらんといかんのか。
on_messageなど、普通に使うコールバックを登録していないとか、subscribeするトピックを登録していないとか、そんな理由だろうか。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。