我已经设置了一个 Debian 存储库(实际上是 Ubuntu),用于内部使用一些私有软件包,现在想通过 Web 将其提供给某些特定服务器。我希望 apt-get / aptitude 使用 HTTPS 连接到它,因为我不想花任何钱,所以我使用自签名证书。
我尝试按照 apt.conf 手册页指示 apt-get 使用我自己的根 CA 证书来验证主机,但似乎不起作用。
我的 apt.conf 文件如下所示:
#Acquire::https::repo.mydomain.com::Verify-Peer "false";
Acquire::https::repo.mydomain.com::CaInfo "/etc/apt/certs/my-cacert.pem";
Acquire::https::repo.mydomain.com::SslCert "/etc/apt/certs/my-cert.pem";
Acquire::https::repo.mydomain.com::SslKey "/etc/apt/certs/my-key.pem";
我也使用客户端证书,但这似乎不是一个问题,因为当我将 Verify-Peer 设置为“false”(上面评论)时,一切都正常。
使用相同的 CA 证书、客户端证书和密钥可以与 curl 很好地配合使用。
我启用了 apt 调试(Debug::Acquire::https“true”)但它提供的信息很少。
关于如何进行有什么建议吗?
答案1
我不使用客户端身份验证,只使用 HTTPS,但我只能使用以下命令使其工作:
Acquire::https {
Verify-Peer "false";
Verify-Host "false";
}
我把它放入文件中/etc/apt/apt.conf.d/90sslverify
。
答案2
最近也遇到了类似的问题,通过添加SslForceVersion
选项解决了。
我的配置如下:
Acquire::https::test.com {
Verify-Peer "true";
Verify-Host "true";
CaInfo "/tmp/ca.crt";
SslCert "/tmp/client.crt";
SslKey "/tmp/client.key";
SslForceVersion "SSLv3";
};
答案3
我通过另一种方式解决了这个问题,即安装 ca 证书。
- 将文件复制
*.crt
到/usr/local/share/ca-certificates/
- 跑步
sudo update-ca-certificates
适用于 Ubuntu 14.04。
答案4
希望这对其他人有所帮助 - 我还无法直接解决这个问题。
作为一种解决方法,我现在使用 stunnel4 创建到我的 HTTPS 存储库的隧道。我拥有的自签名证书和客户端证书与 stunnel4 配合得很好。
我已经设置了 stunnel 来监听 localhost:8888 上的传入连接,并将它们定向到我的存储库 (repo.mydomain.com:443)。我已经设置了 apt 来查找我的存储库http://本地主机:8888/。
到目前为止,效果还不错,尽管这看起来像是一个不必要的改动。