- Ich habe einen Server, auf dem Apache ausgeführt wird, mit einem selbstsignierten Zertifikat (dem Server), an das Subversion angeschlossen ist
- Zum Auschecken oder Aktualisieren aus dem Repo ist ein Benutzername erforderlich.
- Ich habe eine Kasse aus dem Repo, die ich bei einem Cron-Job auf zwei Servern aktualisieren möchte: Server und Client. Keiner der beiden Cron-Jobs funktioniert aus demselben Grund (ich habe auf beiden fast das gleiche Setup, aber der Client ist einfacher).
- Die folgenden sind auf dem Client, wo es nur einen Login gibt: root (ich weiß, bitte ersparen Sie mir die Lächerlichkeit)
- Sie sind beide Gentoo, wenn Sie denken, dass das wichtig ist
Error
Error validating server certificate for 'https://server:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
- The certificate hostname does not match.
Certificate information:
- Hostname: Tom
- Valid: from Sun, 01 Feb 2009 03:51:25 GMT until Tue, 01 Feb 2011 03:51:25 GMT
- Issuer: Fake Company, NYC, New York, US
- Fingerprint: fingerprint here
(R)eject, accept (t)emporarily or accept (p)ermanently?
svn: OPTIONS of 'https://server/svn/repo': Server certificate verification failed: certificate issued for a different hostname, issuer is not trusted (https://server)
Ich weiß das alles. Aus diesem Grund habe ich alle Anleitungen befolgt, damit svn das Zertifikat automatisch akzeptiert:
/root/.subversion/servers
[global]
ssl-authority-files = /root/scripts/server.crt
/root/scripts/server.crt
-----BEGIN CERTIFICATE-----
MIIDejCCAmICCQDibo0twimetjANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJV
UzERMA8GA1UECBMITmV3IFlvcmsxDDAKBgNVBAcTA05ZQzEjMCEGA1UEChMaSGFw
et al
-----END CERTIFICATE-----
/root/scripts/backup.sh
svn up /BACKUP/checkouts/server/ --username tom
Und der Befehl läuft gut als root (kein sudo, direkt als root) ohne Aufforderung zur Bestätigung eines Zertifikats (es hatte zuvor, aber ich habe p gewählt, um dauerhaft zu akzeptieren).
Weiß jemand, warum mein Skript nicht funktioniert? Es hat mich in den letzten Monaten geärgert.
** Bearbeiten: ** Ich habe ein bisschen gebraucht, um darauf zurückzukommen, und ich habe Davids Rat befolgt, aber es funktioniert immer noch nicht. Jetzt ist der Fehler:
Error validating server certificate for 'https://server:443':
- The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually!
Certificate information:
- Hostname: server
- Valid: from Sat, 20 Jun 2009 14:10:45 GMT until Mon, 20 Jun 2011 14:10:45 GMT
- Issuer: Fake Company, New York, US
- Fingerprint: 1a:c6:9c:eb:62:9e:e1:05:d9:d3:ac:01:f4:35:dc:00:14:48:e5:39
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://server/svn/folder': Server certificate verification failed: issuer is not trusted (https://server)
quelle
Eine Sache zu beachten - viele Cron-Jobs werden mit einem anderen HOME ausgeführt (z. B. / etc / crontab (cron.daily etc) setzt HOME = /), sodass es eine andere .subversion-Datei gibt. Wir haben uns hier und da gebissen und es gab einen / Subversionsbaum ohne das akzeptierte Zertifikat. Das korrekte Einstellen von HOME im Cron-Skript hat das Problem behoben.
quelle
Haben Sie versucht zu Satz
ssl-trust-default-ca
zutrue
? Ich weiß nicht, ob sich Ihr Problem lösen lässt, aber ich habe diese Empfehlung bei Versionskontrolle mit Subversion- Buch gesehen.quelle
Es gibt einige Lösungen, um das Problem zu umgehen, die mir in den Sinn kommen. Zunächst können Sie in Apache einen neuen virtuellen Webdav-Host erstellen, der dieses Zertifikat nicht verwendet (einfaches http). Alternativ können Sie die Zugriffsmethode svn + ssh und die Authentifizierung mit privatem Schlüssel für den Cron-Job verwenden (dies kann ein Sicherheitsrisiko darstellen).
Ich würde diesen Weg nur gehen, wenn Sie die Probleme mit dem Zertifikat nicht beheben können oder nicht an den https-Webdav-Zugriff gebunden sind.
quelle
Die Antworten auf diese Frage halfen mir, die Teile zusammenzusetzen, die zur Lösung eines ähnlichen Problems erforderlich waren. Dies dient nur dazu, die Teile für andere Linux-Noobs wie mich vorab zusammenzubauen.
um das Skript zu testen, das Sie über cron verwenden
anstelle dessen, was ich benutzte
Andernfalls sind das Home-Verzeichnis und andere Variablen nicht so, wie es von cron (root) ausgeführt wird.
Zweitens verwenden Sie nicht "--no-auth-cache". Wenn Sie diesen Schalter hinzufügen, können Sie das Zertifikat niemals dauerhaft akzeptieren.
Mit den oben genannten Informationen konnte ich das Skript einmal über sudo su ausführen, das Zertifikat dauerhaft akzeptieren und nachfolgende Cron-Läufe funktionierten.
quelle
Sie können einfach:
quelle
Sie können versuchen, das Zertifikat manuell zu validieren :
quelle
Fügen Sie dies in Ihr Skript ein:
config-dir kann alles sein, wo Sie die Zertifikatinformationen speichern möchten. Führen Sie es manuell aus und akzeptieren Sie das Zertifikat dauerhaft mit "p", bevor Sie es vom Cron ausführen.
Einmal akzeptiert, lassen Sie es durch cron laufen und ich glaube, es wird wie ein Zauber wirken.
Es gibt noch eine weitere Option (wenn die vorherige Option nicht zufällig funktioniert), die in anderen Umgebungen riskant ist, aber in Ihrer Umgebung sollte sie in Ordnung sein. Verwenden Sie das Skript ungefähr so:
Dadurch wird das Zertifikat einfach akzeptiert, ohne sich darum zu kümmern. Dies wird in der Produktionsumgebung nicht empfohlen, da dies ein Sicherheitsrisiko darstellt. In Ihrem Fall können Sie es jedoch verwenden, wenn Sie ein selbst erstelltes Zertifikat verwenden.
Quelle: GeekRide
quelle