swupdate で使用する鍵を変更・追加する方法について本ブログに記載します。
前提条件
本ブログは既に Armadillo に swupdate によって initial_setup.swu をインストールした状態で、Armadillo に証明書が登録されている状態を想定しております。
証明書が登録されているかは、/etc/swupdate.pem より確認できます。
[armadillo ~]# cat /etc/swupdate.pem # atmark-1 -----BEGIN CERTIFICATE----- MIIBuzCCAWCgAwIBAgIUbbibr2AEmw3ohnmkXeGPPf0glgcwCgYIKoZIzj0EAwIw :(省略) -----END CERTIFICATE----- # atmark-2 -----BEGIN CERTIFICATE----- MIIBvzCCAWagAwIBAgIUfagaF9RAjO2+x54PMqIlZkain9MwCgYIKoZIzj0EAwIw :(省略) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- # 登録した証明書 MIIBmjCCAUCgAwIBAgIUSB+WtEVimKWGlR+X3iaZcZm/VREwCgYIKoZIzj0EAwIw :(省略) -----END CERTIFICATE-----
また、新しい鍵を生成するには mkswu のバージョンが 4.3 以上である必要があります。mkswu のバージョンは以下のコマンドで確認できます。
[ATDE ~]$ mkswu --version
mkswu のバージョンが古い場合は以下のコマンドを実行しアップデートしてください。
[ATDE ~]$ sudo apt update && sudo apt install mkswu
新しい鍵の生成方法
以下に鍵を生成する例を示します。
※ここでは例として、パスワードは無しで鍵のコモンネームを test とします。
[ATDE ~]$ mkswu --genkey --plain --cn test 設定ファイルを更新しました:/home/atmark/mkswu/mkswu.conf /home/atmark/mkswu/swupdate.key はすでに存在します。新しい鍵を作成しますか? [Y/n] #Enter を押下 署名鍵 /home/atmark/mkswu/swupdate-2.key と証明書 swupdate-2.pem を作成します。 ----- /home/atmark/mkswu/swupdate-2.pem をコンフィグファイルに追加します。 /home/atmark/mkswu/swupdate-2.pem が次のアップデートをインストールするときに転送されます。 インストールされてから現在の鍵を /home/atmark/mkswu/mkswu.conf から外してください。 [ATDE ~]$ ls mkswu/swupdate-2.* /home/atmark/mkswu/swupdate-2.key /home/atmark/mkswu/swupdate-2.pem
新しい鍵を生成すると、mkswu.conf に先ほど生成した鍵のパスが記載されます。
[ATDE ~]$ tail /home/atmark/mkswu/mkswu.conf #ROLLOUT_ERROR_THRESHOLD=30 # extra swupdate certificate. Remove the old one and use new # PRIVKEY after having installed an update with this first PUBKEY="$PUBKEY,$CONFIG_DIR/swupdate-2.pem" # remove "NEW_" to use NEW_PRIVKEY="$CONFIG_DIR/swupdate-2.key" # This controls if we should update certificates on device, # and can be removed once all devices have been updated to only allow new key UPDATE_CERTS=yes
UPDATE_CERTS が yes の場合、次の swupdate 実行時に Armadillo の /etc/swupdate.pem が更新されます。このときの swupdate は新しく生成した鍵ではなく、今まで使用していた鍵が使用されます。
mkswu --genkey を使用せずに /etc/swupdate.pem を直接編集し、証明書を入力している場合は、その証明書が消えますのでご注意ください。
今まで使用していた鍵を使用できないようにする場合は、mkswu.conf を以下のように編集します。
PUBKEY="$CONFIG_DIR/swupdate-2.pem" PRIVKEY="$CONFIG_DIR/swupdate-2.key" UPDATE_CERTS=yes
swupdate.pem の更新
鍵を生成後に swupdate を実行します。
swupdate 実行後に /etc/swupdate.pem が更新されます。
[armadillo ~]# cat /etc/swupdate.pem :(省略) -----END CERTIFICATE----- # swupdate-2.pem #追加された証明書 -----BEGIN CERTIFICATE----- MIIBljCCATygAwIBAgIUJOus/kS1s8ye0Iv1H7LY1rWCzaMwCgYIKoZIzj0EAwIw :(省略) -----END CERTIFICATE----- # swupdate.pem :(省略)
以上の手順で、今まで使用していた鍵と新しく生成した鍵どちらを使用しても swupdate を実行することができます。
また、今まで使用していた鍵を使用できないよう mkswu.conf を編集した場合は、/etc/swupdate.pem は以下のようになります。
[armadillo ~]# cat /etc/swupdate.pem :(省略) -----END CERTIFICATE----- # swupdate-2.pem #追加された証明書 -----BEGIN CERTIFICATE----- MIIBljCCATygAwIBAgIUJOus/kS1s8ye0Iv1H7LY1rWCzaMwCgYIKoZIzj0EAwIw :(省略) -----END CERTIFICATE----- # swupdate.pemが削除されている