Ich habe ein Bash-Skript, das eine IMG-Datei erstellt, die auf SD-Karten für ARM-Geräte kopiert wird.
Der Befehl debootstrap wird ausgeführt, um ein minimales Debian-Stretch-System (armhf) zu installieren, anschließend wird ein Skript in chroot ausgeführt (Softwareinstallation, Benutzererstellung ...).
Als ich kürzlich Buster aktualisieren musste, habe ich den Verteilungsparameter des Befehls „debootstrap“ in „buster“ geändert. Allerdings erhalte ich beim Versuch, Software zu installieren, die folgende Fehlermeldung bundle install
: SSL-Fehler: Lokales Ausstellerzertifikat konnte nicht abgerufen werden. Es stellt sich heraus, dass dies sogar curl
auf HTTPS-Websites mit einem ähnlichen Fehler fehlschlägt.
Was ich überprüft habe
- ca-certificates ist installiert und
update-ca-certificates
wurde ausgeführt. - Der Inhalt von /etc/ssl/certs scheint dem auf meinem Computer ähnlich zu sein.
Was ich versucht habe
openssl s_client -connect ifconfig.me:443
scheitert, mitunable to get local issuer certificate
curl -k
funktioniert offensichtlichcurl --cacert /etc/ssl/certs/ca-certificates.crt
Werke- Ich habe versucht, eine .img-Datei mit Buster auf amd64 zu generieren,
curl
undbundle install
funktioniert
So reproduzieren Sie das Problem
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
Ich bin wirklich verwirrt. Hat jemand schon einmal ein Problem mit dieser Art gehabt?
Ich danke Ihnen für Ihre Hilfe !
Antwort1
Ich habe herausgefunden, wo das Problem lag.
Es hängt mit dem OpenSSL-Rehash-Befehl zusammen, der von update-ca-certificates ausgeführt wird und zusätzliche Links in /etc/ssl/certs erstellen soll.
In meinem Fall schlägt das Erstellen von "Hash-Links" fehl (https://www.mail-archive.com/[email geschützt]/msg1725724.html).
Ich musste /usr/bin/c_rehash manuell ausführen.
Es ist möglicherweise kein Problem, wenn das System auf dem ARM-Gerät außerhalb des Chroots ausgeführt wird. Ich werde diese Antwort aktualisieren, sobald ich es versucht habe.