Ich habe ein Debian-Repository (eigentlich Ubuntu) für den internen Gebrauch mit einigen privaten Paketen eingerichtet und möchte es nun einigen bestimmten Servern über das Internet zur Verfügung stellen. Ich möchte, dass apt-get / aptitude über HTTPS eine Verbindung herstellt, und weil ich kein Geld ausgeben möchte, verwende ich ein selbstsigniertes Zertifikat.
Ich habe versucht, der Manpage apt.conf zu folgen, um auf apt-get zu verweisen und mein eigenes Stammzertifizierungsstellenzertifikat zum Überprüfen des Hosts zu verwenden, aber es scheint nicht zu funktionieren.
Meine apt.conf-Datei sieht folgendermaßen aus:
#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";
Ich verwende auch ein Client-Zertifikat, aber es scheint kein Problem zu sein, denn wenn ich Verify-Peer auf "false" setze (siehe oben), funktioniert alles.
Wenn Sie dasselbe CA-Zertifikat verwenden, funktionieren Client-Zertifikat und -Schlüssel gut mit Curl.
Ich habe das Apt-Debugging aktiviert (Debug :: Acquire :: https "true"), aber es bietet nur sehr wenige Informationen.
Irgendwelche Vorschläge, wie es weitergehen soll?
quelle
Vor kurzem bin ich auf ein ähnliches Problem gestoßen. Ich habe es durch Hinzufügen einer
SslForceVersion
Option gelöst .Meine Konfiguration ist wie folgt:
quelle
In askubuntu habe ich eine etwas einfachere Version dieser Lösung gefunden, die die Option auf einen einzelnen Host beschränkt.
Das hat bei mir funktioniert.
Der Fragesteller hier wollte jedoch die Authentifizierung beibehalten; Ich habe ein paar Dinge in der oben genannten Richtung ausprobiert, konnte es aber auch nicht zum Laufen bringen. Da mein Repository signiert ist und ich den Signaturschlüssel installiert habe, ist die SSL-Authentifizierung für die Sicherheit nicht kritisch.
quelle
Ich habe es auf andere Weise gelöst, indem ich das ca-Zertifikat installiert habe.
*.crt
Datei nach `/ usr / local / share / ca-certificates /sudo update-ca-certificates
Diese Lösung funktioniert mindestens mit Ubuntu 14.04.
quelle
Hoffentlich hilft das anderen - ich konnte das nicht direkt lösen.
Um dieses Problem zu umgehen, verwende ich jetzt stunnel4, um einen Tunnel zu meinem HTTPS-Repository zu erstellen. Selbstsignierte Zertifikate und das Client-Zertifikat Ich habe sehr gut mit stunnel4 gearbeitet.
Ich habe stunnel eingerichtet, um auf localhost: 8888 nach eingehenden Verbindungen zu suchen und diese an mein Repo (repo.mydomain.com:443) weiterzuleiten. Ich habe apt eingerichtet, um unter http: // localhost: 8888 / nach meinem Repository zu suchen .
Bisher hat dies gut funktioniert, obwohl es wie ein unnötiger Hack scheint.
quelle
GnuTLS oder apt scheint fehlerhaft zu sein. Wenn der Hostname aus meiner apt source.list nicht mit dem Apache-Servernamen von meinem Repository-Webserver übereinstimmt, wird bei TLSv1 der folgende Fehler angezeigt:
Mit SSLv3 funktioniert alles einwandfrei.
Hinweis: Dies hat nichts mit dem SSL-Zertifikat zu tun. Ein ungültiges Zertifikat würde zu folgendem Fehler führen:
quelle