2015年11月14日

Arduino core for ESP8266でHTTPSが叩けるようになっていた件

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
以前から使っている Arduino core for ESP8266 WiFi chip のStaging Version (ver. 1.6.5-1160-gef26c5f) でWiFiClientSecureが使えるようになっていました。

今まではWiFiClientではhttpしか叩けなかったのですが、これでhttpsなWebサーバにもアクセス可能です。
(以前の記事では、espconn_secure_connectを直接叩くことでhttpsなWebサーバにアクセスする方法を紹介していました)

多分、こんなコードでPOSTできるはず!
(現在やってるプロジェクトからhttpsPostの関数だけコピって持ってきたので、全体としては動作確認してませんが、関数自体は問題なく動くことを確認済み)

ちなみに、text=Hello ESP8266!とbat=現在のVCC電圧がPOSTされます。

もっとイケてるコードは examples/HTTPSRequest/HTTPSRequest.ino があるので、そちらを参考にしてください... (GitHubのAPIを叩いてJSONをパースしてる)
→ https://github.com/esp8266/Arduino/commit/2ff8aa08d478aceee39fe4147cb7fcc1eef263f1

以前の記事で、SSLライブラリを有効化して、直接ESP8266のAPIを叩くという方法でHTTPS通信した場合と同様、暗号種は以下の4種対応です。

  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_RC4_128_MD5

WireSharkでパケット見た結果↓


ライブラリはlibsslではなく、axTLSという組み込み向けのSSLライブラリを使っています。

axTLS Embedded SSL

これに気づいたのも、おニュー環境のMacにArduino IDEとArduino core for ESP8266のStaging Versionを入れて、以前の記事の通りにplatform.txtの27行目に -lsslを追記しようとしていたら...


axTLSがリンクされていたので、まさか... と思いGitHubのIssuesを遡ってたら、WiFiClientSecureを追加したよ!みたいな会話があったという。

まだステージングなので色々変わるかもしれませんが、とりあえずこれでサクッとhttps使えますね。

0 件のコメント:

コメントを投稿

記事へのコメントはいつも確認している訳ではないので、お返事が遅れる場合があります。
ご質問やご意見は twitter@9SQ へお送り頂けると早くお返事できると思います。