我已经build立了一个Debian仓库(实际上是Ubuntu),用于一些私人软件包的内部使用,现在想通过networking将其提供给一些特定的服务器。 我想用apt-get / aptitude连接到它使用HTTPS,因为我不想花任何钱使用自签名证书。
我已经试过在apt.conf的手册页上指出apt-get使用我自己的根CA证书来validation主机,但似乎没有工作。
我的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一起工作良好。
我启用了debugging(Debug :: Acquire :: https“true”),但它提供的信息非常less。
有关如何进行的任何build议?
最近我遇到了类似的问题。 我通过添加SslForceVersion选项来解决它。
我的configuration是这样的:
Acquire::https::test.com { Verify-Peer "true"; Verify-Host "true"; CaInfo "/tmp/ca.crt"; SslCert "/tmp/client.crt"; SslKey "/tmp/client.key"; SslForceVersion "SSLv3"; };
我不使用客户端身份validation,只有HTTPS,但我只有它使用这个工作:
Acquire::https { Verify-Peer "false"; Verify-Host "false"; }
我把它放在/etc/apt/apt.conf.d 。
在askubuntu中 ,我发现这个解决scheme的版本稍微简单一些,并且限制了单个主机的选项。
Acquire::https::mirror.ufs.ac.za::Verify-Peer "false";
这对我有效。
然而,这里的提问者想要保持authentication; 我尝试了上面几行的一些东西,但是也不能使它工作。 另一方面,由于我的存储库已签名,并且已经安装了签名密钥,所以SSL身份validation对于安全性来说并不重要。
我以另一种方式解决了这个问题,通过安装CA证书。
*.crt文件复制到`/ usr / local / share / ca-certificates / sudo update-ca-certificates 这个解决scheme至less可以与Ubuntu 14.04兼容。
希望这可以帮助别人 – 我没有能够直接解决这个问题。
作为一个解决方法,我现在使用stunnel4创build隧道到我的HTTPS存储库。 自签证书和客户证书我和stunnel4工作得很好。
我已经设置了stunnel来监听本地主机:8888的传入连接,并将它们指向我的repo(repo.mydomain.com:443)。 我已经build立了易于查找我的存储库在http:// localhost:8888 / 。
到目前为止,这一直运行良好,虽然它似乎是一个不必要的破解。
GnuTLS或apt似乎是越野车。 如果我的apt sources.list中的主机名与我的存储库webserver中的Apache ServerName不匹配,则使用TLSv1获取以下错误:
W:无法获取https://repo.example/debian/dists/unstable/non-free/binary-amd64/Packages :gnutls_handshake()失败:已收到TLS警告警报。
使用SSLv3一切正常。
注意:这与SSL证书无关。 无效的证书会导致以下错误:
Err https://repo1.example unstable / non-free i386 Packages SSL:证书主题名称(repo.example)与目标主机名称“repo1.example”不匹配