そういえば、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にあるファイルを指定していた。
そういうのが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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。