ARM デバイスの SD カードにコピーされる .img ファイルを作成する Bash スクリプトがあります。
debootstrap コマンドを実行して最小限の Debian Stretch システム (armhf) をインストールし、次に chroot でスクリプトを実行します (ソフトウェアのインストール、ユーザーの作成など)。
最近、Buster をアップグレードする必要があったため、debootstrap コマンドの配布パラメータを「buster」に変更しました。しかし、ソフトウェアをインストールしようとすると、「SSL エラー: ローカル発行者証明書を取得できません」というエラーが発生します。HTTPS Web サイトでも同様のエラーが発生し、失敗することbundle install
が判明しました。curl
確認したこと
- ca-certificates がインストールされ、
update-ca-certificates
実行されました。 - /etc/ssl/certs の内容は私のコンピュータのものと似ているようです。
私が試したこと
openssl s_client -connect ifconfig.me:443
失敗し、unable to get local issuer certificate
curl -k
明らかに効果があるcurl --cacert /etc/ssl/certs/ca-certificates.crt
作品- amd64のBusterで.imgファイルを生成しようとしました
curl
が、bundle install
うまくいきました
問題を再現する方法
touch buster_arm.img
truncate --size=2G buster_arm.img # 1G might not be enough
losetup --show --find --partscan --nooverlap buster_arm.img # should be /dev/loop0
parted --align optimal --script /dev/loop0 mklabel msdos mkpart primary 0% 100%
mkfs.ext4 /dev/loop0p1
mount /dev/loop0p1 /mnt/buster_arm
# replace buster by stretch and curl will work
# replace armhf by amd64 and curl will work
debootstrap --arch armhf --variant=minbase buster /mnt/buster_arm https://deb.debian.org/debian/
mount --bind /dev/ /mnt/buster_arm/dev
mount --bind /dev/pts /mnt/buster_arm/dev/pts
cp "$(command -v qemu-arm-static)" /mnt/buster_arm/usr/bin/qemu-arm-static # bypass architecture (my computer is not on armhf)
chroot /mnt/buster_arm /bin/bash
apt-get update && apt-get install ca-certificates curl apt-transport-https && update-ca-certificate
curl https://google.fr
本当に困惑しています。このような問題に直面したことがある人はいますか?
助けてくれてありがとう !
答え1
何が問題なのか分かりました。
これは、update-ca-certificates によって実行される openssl rehash コマンドに関連しており、/etc/ssl/certs に追加のリンクを作成することになっています。
私の場合、「ハッシュリンク」の作成に失敗しました(メールアーカイブ[メールアドレス]/メッセージ1725724.html)。
/usr/bin/c_rehash を手動で実行する必要がありました。
システムが chroot 外の ARM デバイス上で実行されると、問題はなくなる可能性があります。試したらすぐにこの回答を更新します。