无ca-certificates包时如何为Ubuntu 20.04添加受信任CA证书适配内部apt源
解决方案
你遇到的是典型的离线环境下HTTPS源证书信任的死循环问题,不用依赖update-ca-certificates命令即可解决,有两种可行方案:
方案1:手动写入全局证书信任文件(无任何依赖,推荐)
update-ca-certificates的核心逻辑就是把/usr/local/share/ca-certificates/目录下的所有PEM格式CA证书,拼接进系统全局信任证书库/etc/ssl/certs/ca-certificates.crt,你可以手动完成该操作:
- 先确认你持有的根证书是PEM格式(文本打开以
-----BEGIN CERTIFICATE-----开头、-----END CERTIFICATE-----结尾,一般后缀为.crt) - 执行追加命令:
cat /usr/local/share/ca-certificates/mycompany/<你的CA证书文件名>.crt >> /etc/ssl/certs/ca-certificates.crt
- 直接执行
apt update验证,此时apt已经可以正常识别内部源的HTTPS证书,后续可正常安装包括ca-certificates在内的所有包。
如果是在Dockerfile构建场景,可直接通过以下步骤实现,无需手动操作容器:
FROM ubuntu:20.04 # 复制内部根证书到容器内 COPY mycompany-root.crt /usr/local/share/ca-certificates/mycompany/ # 手动追加到全局信任库 RUN cat /usr/local/share/ca-certificates/mycompany/mycompany-root.crt >> /etc/ssl/certs/ca-certificates.crt # 替换apt源 RUN echo > /etc/apt/sources.list && \ echo 'deb https://mycompany.internal.network/ubuntu-remote focal main restricted' >> /etc/apt/sources.list && \ echo 'deb https://mycompany.internal.network/ubuntu-remote focal multiverse' >> /etc/apt/sources.list && \ echo 'deb https://mycompany.internal.network/ubuntu-remote focal universe' >> /etc/apt/sources.list # 验证apt可用 RUN apt update
方案2:临时关闭apt证书校验先装依赖
如果你后续需要用到update-ca-certificates的完整功能,可先临时跳过apt的HTTPS证书校验,安装ca-certificates后再恢复正常校验逻辑:
- 新增apt临时配置,仅针对内部源跳过证书校验:
echo 'Acquire::https::mycompany.internal.network::Verify-Peer "false";' > /etc/apt/apt.conf.d/99-skip-internal-ssl
- 执行安装命令:
apt update && apt install -y ca-certificates
- 安装完成后删除临时配置,执行官方的证书更新命令即可:
rm /etc/apt/apt.conf.d/99-skip-internal-ssl update-ca-certificates
内容的提问来源于stack exchange,提问作者Vincenzo Melandri
相关产品推荐
相关产品推荐

