对基于HTTPS的内部APT存储库使用自签名SSL证书

我已经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证书。

    1. *.crt文件复制到`/ usr / local / share / ca-certificates /
    2. 运行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”不匹配