我有一个小的 initramfs,里面有静态的 busybox。此 initramfs 的唯一目的是将文件下载/上传到 HTTPS 服务器。
我有这样做的适当证书和凭据。但是当我执行命令时:
curl --cacert /tmp/filename.pem -T /tmp/file_to_upload -u user:pass https://Server_name/
我遇到了一个错误:
curl: (60) SSL certificate problem: unable to get local issuer certificate
如果我在 Ubuntu 上使用相同的命令和相同的证书,那么一切都会顺利。
我该如何解决这个问题?
编辑:我不想使用“-k”或“--insecure”开关
笔记:我没有将 openssl 或 /etc/ssl 目录放入 initramfs
答案1
由于您没有 /etc/ssl,我建议curl
在您的命令中添加 -k 选项。
-k, --insecure
(SSL) 此选项明确允许curl 执行“不安全”的SSL 连接和传输。尝试使用默认安装的 CA 证书包来确保所有 SSL 连接的安全。这会使所有被视为“不安全”的连接失败,除非使用 -k, --insecure。
根据您不想要 -k 的编辑,另一个选项是创建 /etc/ssl/certs,并将支撑信任链的根证书添加到其中的证书中。然而,要使其工作,您需要安装 openssl,或者安装最小的/etc/ssl/openssl.cnf
配置文件。
第三个选项可以只是将所有必要的证书连接到“filename.pem”,以按重要性顺序完成信任链(即,如果存在中间 CA,则根 CA 排在最后)。它可以在某些软件设置中工作(Apache、FreeRadius,从未亲自尝试过使用curl)。