自己署名証明書を使う環境下でSnappy(Snap)を使う

SSL/TLS通信に介入して、証明書を書き換えるタイプのセキュリティ製品が導入されているネットワーク下で、 Snappy(Snap)を使おうとすると、snapデーモンはホストのルートCA認証局を利用しないため、 error: cannot refresh: Post https://api.snapcraft.io/v2/snaps/refresh: x509: certificate signed by unknown authorityというエラーを出してしまう。

対処方法

なかなか対処法を見つけられずに諦めていたが、別の調査をしているときに偶然snap daemonが利用する証明書ストアへの証明書追加方法を見つけた。

以下のようにタイプして実行する。

snap set system store-certs.cert1="$(cat yourca.crt)"

yourca.crtには使うCA証明書のパスを入れる。

これにより、snap refreshなどが正常に動作するようになる。

補足

Ubuntuの場合、CA証明書を追加する場所は/usr/local/share/ca-certificates/なので、以下をすぐコピペできるようにしている。

echo '-----BEGIN CERTIFICATE-----
MIICxT********************************************************
**************************************************************
**************************************************************
-----END CERTIFICATE-----' | sudo tee /usr/local/share/ca-certificates/yourca.crt
sudo snap set system store-certs.cert1="$(cat /usr/local/share/ca-certificates/yourca.crt)"
sudo update-ca-certificates

参考