Bug 9650 - Fehlermeldung wenn beim Aufruf von univention-join per dcname kein FQDN angegeben wird
Fehlermeldung wenn beim Aufruf von univention-join per dcname kein FQDN angeg...
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Join (univention-join)
UCS 2.0
All Linux
: P4 enhancement (vote)
: UCS 2.3
Assigned To: Daniel Hofmann
Janek Walkenhorst
:
Depends on:
Blocks: 14432
  Show dependency treegraph
 
Reported: 2007-11-02 10:43 CET by Christoph Niemann
Modified: 2009-12-21 08:50 CET (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Christoph Niemann univentionstaff 2007-11-02 10:43:39 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.
Comment 1 Stefan Gohmann univentionstaff 2007-11-02 10:52:14 CET
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.
Comment 2 Moritz Muehlenhoff univentionstaff 2009-08-06 12:32:46 CEST
(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
Comment 3 Daniel Hofmann univentionstaff 2009-08-10 16:04:32 CEST
Das Skript univention-join bricht jetzt ab, wenn es feststellt, dass dcname und cname im Zertifikat nicht zusammenpassen.
Changelogeintrag hinzugefügt.
Comment 4 Janek Walkenhorst univentionstaff 2009-08-26 11:58:23 CEST
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 ()
**************************************************************************
Comment 5 Sönke Schwardt-Krummrich univentionstaff 2009-08-26 12:55:52 CEST
(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.
Comment 6 Stefan Gohmann univentionstaff 2009-08-26 13:10:32 CEST
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.
Comment 7 Janek Walkenhorst univentionstaff 2009-08-26 13:17:19 CEST
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
Comment 8 Daniel Hofmann univentionstaff 2009-08-26 14:24:39 CEST
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.
Comment 9 Janek Walkenhorst univentionstaff 2009-09-15 10:25:44 CEST
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
Comment 10 Stefan Gohmann univentionstaff 2009-10-28 07:21:05 CET
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.
Comment 11 Daniel Hofmann univentionstaff 2009-10-28 14:05:17 CET
Irgendwas scheint mit univention-ssh nicht mehr so zu laufen wie bisher.
Comment 12 Daniel Hofmann univentionstaff 2009-10-28 14:27:38 CET
(In reply to comment #11)
> Irgendwas scheint mit univention-ssh nicht mehr so zu laufen wie bisher.
ne, falsche Vermutung
Comment 13 Daniel Hofmann univentionstaff 2009-10-28 15:07:24 CET
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. ..?
Comment 14 Stefan Gohmann univentionstaff 2009-10-28 15:11:46 CET
Es ist bei mir und bei Janis aufgetreten. Du kannst dir das auf meinem System anschauen.
Comment 15 Daniel Hofmann univentionstaff 2009-10-29 18:27:51 CET
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.
Comment 16 Janis Meybohm univentionstaff 2009-11-03 11:04:01 CET
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
Comment 17 Daniel Hofmann univentionstaff 2009-11-03 14:54:51 CET
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.
Comment 18 Daniel Hofmann univentionstaff 2009-11-03 15:11:00 CET
Check ist jetzt nach hinten verschoben, wo die Datei bereits vorhanden ist.
Comment 19 Janek Walkenhorst univentionstaff 2009-11-16 13:24:07 CET
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
Comment 20 Stefan Gohmann univentionstaff 2009-12-21 08:50:14 CET
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".