Armadilloフォーラム

屋外設置の機器で curl を使い https 通信を行う場合に考慮すべきこと。CA 証明書の更新 or '--insecure'オプション

manabu-yoshioka-arc

2024年1月24日 15時54分

armadillo iot a6 を使用して、ある屋外設置型の機器の開発を行なっています。

その機器は curl を使用し、自社向けのサーバに https で接続しながら動作します。
開発中、`SSL certificate problem: unable to get local issuer certificate` というエラーに遭遇しましたが、
[Debian Buster:cURLが失敗してしまう場合の対策について](https://armadillo.atmark-techno.com/blog/10899/9638)
を参考に、CA証明書を更新し、問題なく動かせることができました。

そこで一つご意見を伺いたく質問させていただきます。

この開発装置は屋外で、10年以上使われるであろう機器です。
ルートの証明書が更新されることもあるでしょうし、その時に突然機器が動かなくなるかもしれないのは避けたいです。

貴社の経験上、このような機器で、同じような相談はございませんでしょうか。また組込機器特有のこの手の問題に関して、ご意見あればお伺いしたいです。
もっと具体的に言いますと、質問にあるように、-K または `--insecure` オプションを使用しておいた方が良いでしょうか。あるいは、証明書を自動更新するようなアイデアなりスクリプトを考案されたことはございませんでしょうか。

何かヒントとかお考えを聞かせていただけるだけでも結構です。よろしくお願いします。

コメント

聞かれた事はないのですが、単純にcurlする前に update-ca-certificatesするように
に書いておけば良いと思います。curlを呼ぶ頻度が高いのであれば、curlの返り値を
見て(そもそもcurlの返り値でエラー処理するスクリプトを書いていると思いますが)
その中でupdate-ca-certificateで更新を試行すると良いと思います。

固定的な用途のシステムの場合、不特定多数のサーバーにアクセスすることは少なく、
普通アクセス先のCAの証明書更新は自身で把握されているものだと思っています。
(そもそも証明書には有効期限が入っています)ので、それに合わせて更新するように
日時で動く作りにしても良いとおもいますが、このあたりは運用と設計ポリシー次第です。

証明書の交代のために新旧の証明書の有効期限の最後と最初の時期を
オーバーラップさせたりする等、CA側の運用の工夫もあると思いますが、
このあたりもコストやサーバーの仕様によるので設計次第だと思います。

証明書の確認を無視するオプションについては、TLSを使う安全上の
意味が全く無いのでやめたほうがいいと思います。dnsを偽装される等で、
正しく無いサーバーへのアクセスに誘導された場合や、偽装した
プロキシサーバーで中継しデータを改ざん等されても気づけないです。
実験時や何か特殊な事情がある場合はやっていいと思いますが、これも
別に勧める人はいないと思います。

manabu-yoshioka-arc

2024年1月26日 14時32分

> 聞かれた事はないのですが、単純にcurlする前に update-ca-certificatesするように

update-ca-certificates 、お教えいただきありがとうございます。

追加の質問なのですが、出荷の際には、overlayfs をかけようと思っております。その際でも update-ca-certificates は問題なく、動作するのでしょうか。
直接の回答でなくとも、例えば overlayfs でどの部分の書き換えが一時的なものでどの部分が恒久的なものになるのか、そのあたりの説明先をガイドしていただくのでも結構です。よろしくお願いします。