busybox支持https
容器内没有系统 CA 根证书,导致无法验证 HTTPS/TLS 证书。
错误信息:
tls: failed to verify certificate: x509: certificate signed by unknown authority
一、问题原因
BusyBox 镜像极度精简,不包含 /etc/ssl/certs/ca-certificates.crt 或 /usr/share/ca-certificates/
因此当你执行 HTTPS 请求(例如 wget https://、ossutil https://、apk add、curl 等)时,TLS 验证无法找到受信任的根证书链。
二、安装 CA 证书包
如果 BusyBox 镜像基于 Alpine(例如 busybox:1.36.1-musl),可以通过:
1 | apk add --no-cache ca-certificates |
在 Dockerfile 中添加:
1 | FROM busybox:1.36.1-musl |
但更通用和安全的写法是:
1 | FROM alpine:3.20 AS certs |
优点:安全、标准、兼容 HTTPS 客户端验证。
三、快速验证修复是否成功
进入容器后执行:
1 | wget https://www.google.com -O /dev/null |
或:
1 | openssl s_client -connect oss-cn-hangzhou.aliyuncs.com:443 </dev/null |
如果没有出现 x509: certificate signed by unknown authority,说明证书链已正常工作。
四、证书信任链原理
