【esp32】chromeのルート証明書をダウンロードする
googleのセキュリティ強化で従来の方法ではgooglesheetに書き込めなくなりました。そこでルート証明書を使ってみたところgooglesheetに書き込むことが出来たのでメモしておきます。
ルート証明書
googleのchromeブラウザでルート証明書を確認するにはchrome://settings/certificatesを開きます。
【証明書の管理】から【認証局】を開くとgoogle chromeに保存されている認証局の一覧が表示されます。
一覧を下の方にスクロールしていくと、「org-Google Trust Services LLC」があるので右側の「v」をクリックします。
GTS Root R1 , GTS Root R2 , ….と保存されているので「GTS Root R1」の「表示」をクリックすることで証明書の詳細を確認することが出来ます。
例えばこのGTS Root R1の有効期限は「2036/06/22 9:00:00 JST」であることが判ります。
root-caのダウンロード
このルート証明書をダウンロードして証明書の中を見てみることにします。
先程の右下から「エクスポート」をクリックするか一覧表示から「エクスポート」を選択しダウンロードします。
ダウンロードしたファイルを開くと暗号化された ca 証明書を見ることが出来ます。
WiFiClientSecureライブラリ
このca証明書をWiFiClientSecureライブラリで使えるようにします。
” と \n"\ をca証明書の前後に入れるのですがエクセルやgooglesheetを使えば簡単ですね。
関数には文字列の連結を使います。
出来た証明書がこちらです。
バックスラッシュが¥に変換されていますが、これはどちらも同じコード(Unicode表記でU+005c)を使っているため起きる現象で利用環境によって異なるようです。
esp32 スケッチ(コード)
ca証明書が出来たらesp32からgoogleのサーバーにアクセスしてみます。
コードはarduinoのサンプルスケッチを参考にしました。
#include <WiFi.h> #include <WiFiClientSecure.h> const char* ssid = " ssid "; const char* password = " pass word "; const char* host = "script.google.com"; const int httpsPort = 443; const char* root_ca_R1= \ -----BEGIN CERTIFICATE-----\n\ MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH\n\ MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM\n\ QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy\n\ ----------- 省略 -----END CERTIFICATE-----\n; WiFiClientSecure client; void setup(){ Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("connecting to "); client.setCACert(root_ca_R1); Serial.println(host); if (!client.connect(host, httpsPort)) { Serial.println("connection failed"); return; }else{ Serial.println("connection success"); client.stop(); } } void loop(){ // nothing }
このコードをesp32に書き込みます。
さて、実行した結果は….
「success」ということでgoogleのサーバーにアクセス成功です。
ということでgooglesheetにも書き込むことが可能になりました。
ca証明書 まとめ
googleのセキュリティー対策で振り回された感もあるここ最近の変化ですがgooglesheetの書き込みもca証明書を示すことで書き込みが可能になりました。
試したところ書き込み後のリダイレクトもキャッチ出来るようですのでgooglesheetから指示を出すことも出来そうです。
【2022/05 補足】
googlesheetに書き込むための送信先は 拡張機能 ⇒ Apps Script でデブロイしたデブロイIDを使用します。(数年前に使用したシートIDではありません)