Debootstrap armhd Buster:無法取得本機頒發者證書

Debootstrap armhd Buster:無法取得本機頒發者證書

我有一個 Bash 腳本,它會建立一個 .img 文件,該文件將複製到 ARM 裝置的 SD 卡上。

執行 debootstrap 指令來安裝最小的 Debian Stretch 系統 (armhf),然後在 chroot 中執行腳本(軟體安裝、使用者建立...)。

最近,由於我需要在Buster上進行升級,我將debootstrap命令分發參數更改為“buster”。但是,當我嘗試安裝軟體時出現錯誤bundle install:SSL 錯誤:無法取得本機頒發者憑證。事實證明,即使curl在 HTTPS 網站上也會失敗並出現類似的錯誤。

我檢查了什麼

  • 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 中建立其他連結。

就我而言,它無法創建“哈希鏈接”(https://www.mail-archive.com/[電子郵件受保護]/msg1725724.html)。

我必須手動運行 /usr/bin/c_rehash 。

一旦系統在 chroot 之外的 ARM 裝置上運行,這可能就不是問題了。我一嘗試就會更新這個答案。

相關內容