3

如何从给定的 url 获取根 SSL 证书以及任何中间体到文件?理想情况下,通过一些与 linux shell 兼容的命令行,但如果我必须手动执行。 更新:交互式地,使用 Chrome,如果我检查证书,我可以选择导出它。如果适用,还有一种方法可以抓住整个链条。所以现在我只是在寻找一种可编写脚本的方法。

背景:

mono nuget.exe install ./packages.config -o ./packages

将在 ubuntu 上安装项目包,只要在机器的 Trust store 中安装了所需的证书。在某种程度上,它是这样完成的:

$ certmgr -ssl https://nugetgallery.blob.core.windows.net

此命令带有 -ssl 选项,从指定的 url 获取证书和任何中间体,并且需要用户确认。我正在尝试自动化服务器构建,所以我想在不需要用户确认的情况下添加证书。

我已经尝试将响应通过管道传输到命令中 - 即:

$ echo "Yes" | certmgr -ssl https://nugetgallery.blob.core.windows.net

那是行不通的。我尝试将证书导出到文件中,以便可以将它们添加到我的构建项目中,但 mono certmgr 尚未实现“放置”。

4

1 回答 1

4

假设安装了 openssl,这个命令行:

echo | openssl s_client \
    -showcerts \
    -connect nugetgallery.blob.core.windows.net:443 2>&1 |
        sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem

生成一个包含此链中涉及的所有三个证书的文件。

感谢这个问题的答案Using openssl to get the certificate from a server for the solution to get the chain。以下命令将保存的证书加载到信任库中。

openssl crl2pkcs7 -nocrl -certfile cert.pem -out cert.p7b
certmgr -add -c -m Trust ./cert.p7b
于 2013-10-04T15:31:27.997 回答