私はいくつかのプライベートパッケージで内部使用するためにDebianリポジトリ(実際にはUbuntu)をセットアップしましたが、特定のサーバーがWeb経由で利用できるようにしたいと考えています。 apt-get/aptitudeをHTTPSを使用して接続したいのですが、お金をかけたくないので自己署名証明書を使用しています。
Apt.confのmanページで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")を有効にしましたが、情報はほとんど提供されません。
続行する方法について何か提案はありますか?
うまくいけば、これが他の人を助けるでしょう-私はこれを直接解決することができませんでした。
回避策として、私は今stunnel4を使用してHTTPSリポジトリへのトンネルを作成しています。自己署名証明書と私が持っているクライアント証明書は、stunnel4で非常にうまく機能します。
Localhost:8888で着信接続をリッスンするようにstunnelを設定し、それらを私のリポジトリ(repo.mydomain.com:443)に転送します。 http:// localhost:8888 / でリポジトリを探すように設定しました。
今のところ、これはうまく機能していますが、不必要なハックのようです。
私はクライアント認証を使用せず、HTTPSのみを使用していますが、これを使用して機能させるだけです:
Acquire::https {
Verify-Peer "false";
Verify-Host "false";
}
これを/etc/apt/apt.conf.d
の下のファイルに置きます。
最近、同様の問題に遭遇しました。 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";
};
Ca-certificateをインストールして、別の方法で解決しました。
*.crt
ファイルを `/ usr/local/share/ca-certificates /にSudo update-ca-certificates
このソリューションは、少なくともUbuntu 14.04で動作します。
askubunt で、このソリューションのややシンプルなバージョンと、オプションを単一のホストに制限するバージョンを見つけました。
Acquire::https::mirror.ufs.ac.za::Verify-Peer "false";
これでうまくいきました。
ただし、ここの質問者は認証を保持したいと考えていました。私は上記の線に沿っていくつかのことを試しましたが、それを機能させることもできませんでした。一方、私のリポジトリは署名されており、署名キーをインストールしたので、SSL認証はセキュリティにとって重要ではありません。