Univention Bugzilla – Bug 9650
Fehlermeldung wenn beim Aufruf von univention-join per dcname kein FQDN angegeben wird
Last modified: 2009-12-21 08:50:14 CET
Es würde evtl. Fehlersuche sparen, wenn man eine Fehlermeldung ausgibt, wenn beim Joinen eines Rechners unter angabe des Masters, eine Fehlermeldung ausgegeben wird, wenn per -dcname kein FQDN angegeben wurde. Ruft man z.B. "univention-join -dcname master150" auf, läuft das Skript bis zum Join-Skript des Listeners durch und schlägt dann ohne aussagekräftige Fehlermeldung im Log oder irgendwo sonst fehl. Ruft man stattdessen "univention-join -dcname master150.ucs.test" auf funktioniert es. Wenn im ersteren Fall entweder das Argument zu einem FQDN geändert würde oder wenigstens eine aussagekräftige Fehlermeldung kommen würde, wäre es etwas leichter den Fehler zu finden. Moritz sagt, diese Tatsache führt auch immer wieder in Schulungen zu Verwirrung.
Es ist eigentlich dokumentiert, dass dort der FQDN verwendet werden sollte. Zumindest im Normalfall, genauer gesagt sollte das verwendet werden, was im Zertifikat für den Rechner steht. Allerdings ist die Verwendung des Parameters überflüssig, wenn man in der gleichen DNS Domäne installiert, dann wird der DC Master automatisch gefunden, es reicht also univention-join ohn Parameter. Ich denke eine Warnung sollte reichen, wenn kein FQDN verwendet wird.
(In reply to comment #1) > Ich denke eine Warnung sollte reichen, wenn kein FQDN verwendet wird. Die Warnmeldung wäre i.d.T. nützlich. Das ist ein Fehler, der öfters bei Basis-Schulungen auftritt (da dort öfters mal von Hand auf der Shell neu gejoint wird und ggf. keine SRV-Records zur Verfügung stehen) und in diesem Ticket fiel es mir gerade bei einem Partner ebenfalls auf: https://gorm.knut.univention.de/otrs/index.pl?Action=AgentTicketZoom&TicketID=17834&ArticleID=84802&ZoomExpand=0#84802
Das Skript univention-join bricht jetzt ab, wenn es feststellt, dass dcname und cname im Zertifikat nicht zusammenpassen. Changelogeintrag hinzugefügt.
Wenn man keinen FQDN angibt bekommt man eine Fehlermeldung. Wenn diese Meldung das Prädikat "aussagekräftig" verdient, ist der Bug "VERIFIED" # univention-join -dcname masa230 univention-join: joins a computer to an ucs domain copyright (c) 2001-2009 Univention GmbH, Germany Insert DC Master Account : Administrator Insert DC Master Password: Check DC Master: done ************************************************************************** * Join failed! * * Contact your system administrator * ************************************************************************** * Message: The specified dcname (masa230) doesn't match the common Name in the host certificate () **************************************************************************
(In reply to comment #4) > Wenn man keinen FQDN angibt bekommt man eine Fehlermeldung. Wenn diese Meldung > das Prädikat "aussagekräftig" verdient, ist der Bug "VERIFIED" > * Message: The specified dcname (masa230) doesn't match the common Name in the > host certificate () In den Klammern "()" sollte eigentlich der common Name des Master-SSL-Zertifikats stehen. Ich denke, hier sollte überprüft werden, ob mindestens ein Punkt im angegebenen "FQDN" auftaucht und ob der "FQDN" auflösbar ist (falls das nicht schon gemacht wird). Dafür sollte dann eine zusätzliche, passendere Meldung erfolgen.
Alternativ könnten wir auch den angegebenen Namen oder die IP direkt in den FQDN umwandeln, mit einem --force-dcname könnte man dann den echten Namen weiterverwenden.
Wenn man einen "falschen" FQDN angibt, der auf die richtige IP aufgelöst wird erscheint folgende Meldung: Message: The specified dcname (masa230.nix.test) doesn't match the common Name in the host certificate () Wenn man einen "FQDN" nimmt der nicht aufgelöst werden kann: Message: ping to masa230.nxix.test failed
Das Problem beim Test von Janek war wohl, dass die Datei /etc/univention/ssl/$DCNAME/cert.pem nicht vorhanden war. Bei meinen Tests ohne FQDN war diese wohl immer vorhanden, weil wohl standardmäßig hierfür Symlinks angelegt werden. Habe jetzt einen Check eingebaut, der schaut, ob die Datei überhaupt vorhanden ist, und ggf. eine verständlichere Fehlermeldung ausgibt. Habe außerdem noch einen Check eingebaut, ob der commonName überhaupt erfolgreich extrahiert werden konnte, und ggf. auch eine bessere Fehlermeldung ausgibt. @Sönke: die Überprüfung, ob der FQDN auflösbar ist, findet bereits vorher durch einen ping-Test mit passender fehlermeldung statt. Der "."-Check ist im Prinzip nicht nötig, sofern der Benutzer durch den bereits bestehenden Check dazu gezwungen wird, dass commonName==dcname, könnte man aber trotzdem machen, da das natürlich schneller feststellbar wäre. @Stefan: hab es jetzt mal so gelassen wies ist, dass der dcname nicht automatisch zum FQDN erweitert wird. Wenn ich jetzt einen eurer Änderungsvorschläge noch einbauen soll, oder evtl. noch einen Test, ob ssh zum FQDN funktioniert (mit entsprechender Fehlermeldung), bitte nochmals sagen.
Verified: Kein FQDN: Message: The specified dcname (meister) doesn't match the common Name in the host certificate (meister.qa.univention.test) Falscher FQDN: Message: Could not find the DC host certificate in /etc/univention/ssl/meisa.komisch.test/cert.pem on the host. Maybe you specified an invalid dcname? univention-join 2.0.10-4.270.200909080952
Ich habe versucht mein Notebook hier in die KNUT-Domäne zu joinen. Das war erst erfolgreich, nachdem ich den Code Block auskommentiert hatte: ------- cert_name=`univention-ssh $DCPWD "$DCNAME 'ls ""/etc/univention/ssl/$DCNAME/cert.pem""'" | sed s/.*\ // | tr -d '\r\n'` if [ "$cert_name" != "/etc/univention/ssl/$DCNAME/cert.pem" ]; then failed_message "Could not find the DC host certificate in /etc/univention/ssl/"$DCNAME"/cert.pem on the host. Maybe you specified an invalid dcname?" fi common_name=`univention-ssh $DCPWD "$DCNAME 'openssl x509 -noout -in ""$cert_name"" -subject -nameopt multiline'" | grep commonName | sed s/.*\ // | tr -d if [ -z "$common_name" ]; then failed_message "Unable to extract common Name from DC host certificate in /etc/univention/ssl/"$DCNAME"/cert.pem on the host. Maybe the file is corrupt fi if [ "$common_name" != "$DCNAME" ]; then failed_message "The specified dcname ($DCNAME) doesn't match the common Name in the host certificate ($common_name)" fi ------- Ein ssh stefan@billy.knut.univention.de ls /etc/univention/ssl/billy.knut.univention.de/cert.pem war erfolgreich.
Irgendwas scheint mit univention-ssh nicht mehr so zu laufen wie bisher.
(In reply to comment #11) > Irgendwas scheint mit univention-ssh nicht mehr so zu laufen wie bisher. ne, falsche Vermutung
Bei mir hat ein join gerade einwandfrei funktioniert. Könnte ich da evtl noch mmehr Informationen über den Fehler erhalten, mir das System anschauen wo das auftritt, welche Meldung er bringt, etc. ..?
Es ist bei mir und bei Janis aufgetreten. Du kannst dir das auf meinem System anschauen.
Ok, Fehler war, dass ich den ssh-benutzername nicht angegeben habe, und der bei meinen Tests verwendete Benutzer (root), den ssh dann standardmäßig nimmt zufällig das gleiche Passwort hatte, wie der DC-Master-Account. Das zu korrigieren hätte aber auch nix geholfen, da dieser Account auf 2.2 keine Leserechte auf das Hostzertifikat des Masters hat. Drum jetzt Überprüfung des Hostnamenarguments mit Hilfe eines LDAP-TLS-Logins, was vermutlich auch das ist, was in dem angesprochenen späteren Joinskript dann später fehlschlagen würde. Außerdem noch einen a priori Passwort und DC-Masteraccountnamencheck durch einen ssh-login eingefügt. Jeweils hilfreiche Ausgaben für den Fehlerfall hinzugefügt. Changelog angepasst.
Das funktioniert so noch nicht. Auf einem neu installierten Managed Client (2.3 amd64): -- root@oh23qaamd:~# univention-join univention-join: joins a computer to an ucs domain copyright (c) 2001-2009 Univention GmbH, Germany Insert DC Master Account : janis Insert DC Master Password: Search DC Master: done Check DC Master: ldap_start_tls: Connect error (-11) ************************************************************************** * Join failed! * * Contact your system administrator * ************************************************************************** * Message: Establishing a TLS connection with billy.knut.univention.de failed. Maybe you didn't specify a FQDN. ************************************************************************** -- root@oh23qaamd:~# ldapsearch -x -ZZ -s base -h billy.knut.univention.de -d 1 2>&1 | grep TLS TLS: could not load verify locations (file:`/etc/univention/ssl/ucsCA/CAcert.pem',dir:`'). TLS: error:02001002:system library:fopen:No such file or directory bss_file.c:122 TLS: error:2006D080:BIO routines:BIO_new_file:no such file bss_file.c:125 TLS: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib by_file.c:274
Ok, die Datei /etc/univention/ssl/ucsCA/CAcert.pem ist zum Zeitpunkt der Prüfung noch nicht vom Master heruntergeladen, weshalb dem master noch nicht vertraut wird, und die Verbindung nicht erfolgreich aufgebaut wird.
Check ist jetzt nach hinten verschoben, wo die Datei bereits vorhanden ist.
Verified: Wenn man einen falschen dcname angibt: ************************************************************************** * Join failed! * * Contact your system administrator * ************************************************************************** * Message: Establishing a TLS connection with foobar failed. Maybe you didn't specify a FQDN. ************************************************************************** [Falsch bedeutet: Kein FQDN, falscher Hostname, falscher Hostname aber FQDN] Wenn man es richtig macht, funktioniert der Join: root@mitglied:~# univention-join -dcname meister.janek.test univention-join: joins a computer to an ucs domain copyright (c) 2001-2009 Univention GmbH, Germany Insert DC Master Account : Administrator Insert DC Master Password: Check DC Master: done Search ldap/base done Search LDAP binddn done Join Computer Account: done Check TLS connection done Download host certificate done TLS_CACERT /etc/univention/ssl/ucsCA/CAcert.pem Configure 02univention-heimdal-member.inst done Configure 03univention-directory-listener.inst done Configure 04univention-ldap-client.inst done Configure 08univention-apache.inst done Configure 20univention-directory-policy.inst done Configure 34univention-management-console-server.inst done Configure 41univention-updater.inst done Configure 44univention-management-console-system-info.inst done Configure 78univention-kde.inst done Configure 91univention-join.inst done Configure 98univention-pkgdb-tools.inst done
UCS 2.3 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".