Amazon Web Services 資料一覧
AWS IoTにRubyのMQTTクライアントから接続しようとすると「SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate) (OpenSSL::SSL::SSLError)」になる
2019/10/11更新
対応バージョン: ruby-mqtt 0.5.0
AWS IoTで証明書を作成し、これを使ってRubyのMQTTクライアントからAWS IoTに接続しようとするとエラーになる。
コード
$ vi mqtt.rb require 'rubygems' require 'mqtt' client = MQTT::Client.connect( host: 'xxxxxxxxxxxxxx-ats.iot.ap-northeast-1.amazonaws.com', port: 8883, ssl: true, cert_file: '<AWS IoTで作成した「このモノの証明書」>', key_file: '<AWS IoTで作成した「プライベートキー」>', ca_file: '<AWS IoTの「ルートCA ダウンロード」のページから取得したルートCA証明書>') :
実行結果
$ ruby mqtt.rb : SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate) (OpenSSL::SSL::SSLError)
これは既にレガシー扱いになったVeriSign発行のルートCA証明書を使っているからであり、Amazon Trust Services発行のルートCA証明書を使えば問題なく動作する。
関連資料・記事
[Amazon Web Services] AWS IoTでMQTTブローカーを作りArduinoからのセンシングデータをSNS通知する手順
[Amazon Web Services] AWS IoTでMQTTブローカーを作りArduinoからのセンシングデータをSNS通知する手順(AWS CLI編)
参考サイト
AWS IoT (Amazon Web Services)
AWS IoT開発者ガイド (Amazon Web Services)
IoT – 特集カテゴリー (DevelopersIO)
AWS IoT情報 (Qiita)