Benutzerimport UMC - Meldung: Connection - Error: hostname 'ucs.xyz.intranet' doesn't match '<domain>.de'

Vers 4.4.-4 errata528
Der Benutzerimport via UMC hat bis Vers. 4.4-3 einwandfrei geklappt - nun kommt sofort die Fehlermeldung

Ein Fehler ist aufgetreten (UCR Standard):

Die Anfrage konnte nicht bearbeitet werden.
Interner Server-Fehler in “schoolimport/ping”.

-> Fehlernachricht des Servers anzeigen:

Interner Server-Fehler in "schoolimport/ping".
Request: schoolimport/ping
[...]
File "%PY2.7%/ucsschool/http_api/client.py", line 386, in resource_urls
    self._resource_urls = self.call_api('get', '.')
  File "%PY2.7%/ucsschool/http_api/client.py", line 451, in call_api
    raise ConnectionError(str(exc))
ConnectionError: hostname 'ucs.<schulname>.intranet' doesn't match '<schuldomain>.de'

Meldung ähnlich wie im Bugzilla-Eintrag https://forge.univention.org/bugzilla/show_bug.cgi?id=47911 - hilft jedoch nicht wirklich weiter.

Lösungsversuch: UCR-Eintrag ucsschool/import/http_api/client/server=‘schuldomain’.de geändert
-> service univention-management-console-server restart
ergibt nach langer Wartezeit eine andere Fehlermeldung:
ConnectionError: HTTPSConnectionPool(host='<schuldomain>.de', port=443): Max retries exceeded with url: /api/v1/ (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7fc8fb8b19d0>: Failed to establish a new connection: [Errno 110] Die Wartezeit f\xc3\xbcr die Verbindung ist abgelaufen',))

Auch
ucr set ucsschool/import/http_api/ALLOWED_HOSTS=$ucs.‘schulname’.de,$‘schuldomain’.de,127.0.0.1,localhost
service apache2 restart
service ucs-school-import-http-api restart
service celery-worker-ucsschool-import restart

haben nix gebracht - was passt da nicht?

Eine Woche vergangen und kein Experte hat eine Idee?
Deshalb mal so in die Runde gefragt: Was passiert, wenn wir den ganzen ucs@school-Kram de- und noch mal neu installieren? Verlieren wir da was? Worauf wäre zu achten?
Vllt. kann diese simple Frage jemand beantworten!

Es handelt sich um einen Fehler bei der Validierung des SSL-Zertifikats. Der für die Verbindung verwendete Name ucs.<schulname>.intranet passt nicht zum Namen im Zertifikat (<schuldomain>.de).

Sie haben die Lösung am Bug schon gefunden (changelog).

Das mit dem $ klappt so nicht. Das kommt daher, dass in dem Test am Bug eval "$(ucr shell)" ausgeführt worden war, und die UCR-Variablen deswegen als Shell-Variablen verfügbar waren.

Zusätzlich zum Setzen von Setzen von ucsschool/import/http_api/ALLOWED_HOSTS muss auch ucsschool/import/http_api/client/server gesetzt werden.
Am Bug ist in Comment 8 ein Beispiel. Ich denke bei Ihnen müsste es lauten

ucr set \
    ucsschool/import/http_api/ALLOWED_HOSTS=ucs.<schulname>.intranet,ucs,127.0.0.1,localhost
    ucsschool/import/http_api/client/server=ucs.<schulname>.intranet

Wobei ucs der hostname ist (hostname -s) und ucs.<schulname>.intranet der FQDN (hostname -f).

Grüße
Daniel Tröder

Hallo Herr Troeder,
das $ hab ich übersehen, Asche auf’ mein Haupt…
Hab’s grad mal ausprobiert, Einträge vorgenommen wie empfohlen, Ausgeloggt, dann
service ucs-school-import-http-api restart
service univention-management-console-server restart
Wieder eingeloggt - Fehler bleibt leider derselbe, schade.
Wäre Neuinstallation denn eine Option?

Wie lautet die Fehlermeldung mit gesetztem ucsschool/import/http_api/client/server ?
Eine Neuinstallation ändert an dem Problem nichts: beim Verbindungsaufbau wird ein Server mit Namen a.b.c angesprochen, das SSL-Zertifikat das dieser ausliefert lautet aber auf x.y.z.

Wenn ich den Eintrag in ucsschool/import/http_api/client/server wie empfohlen setze, endet der Versuch sofort mit
ConnectionError: hostname 'ucs.<schulname>.intranet' doesn't match '<schuldomain>.de'
Lasse ich das Feld leer, ebenfalls.

Zum Vergleich trage ich [schuldomain].de ein (Änderungen werden also angenommen), kommt nach langer Zeit
ConnectionError: HTTPSConnectionPool(host='<schuldomain>.de', port=443): Max retries exceeded with url: /api/v1/ (Caused by NewConnectionError('<requests.packages.urllib3.connection.
Wie man’s dreht und wendet, ein Import ist so nicht möglich.

Im ersten Post steht bei der Fehlermeldung zusätzlich:

Das hört sich so an, als ob eine Verbindung zustande kommt, aber niemand antwortet.
Können Sie denn auf die API über einen Browser zugreifen? Die URL ist:
https://<DC Master>/api/v1/
Die können sich dann oben rechts, mit dem Useraccount der den Import durchführen soll, einloggen. Es sollten dann klickbare Pfade für “schools”, “roles” und “userimport” erscheinen.

Bin nun vor Ort und hab’s intern ausprobiert:
https://ucs.[schulname].intranet/api/v1/ ergibt erstmal eine Zertifikatswarnung:

Zertifikat nur gültig für https://[schuldomain].de

Akzeptieren & Fortfahren bringt dann

Api Root

GET /api/v1/

HTTP 403 Forbidden Allow: GET, HEAD, OPTIONS Content-Type: application/json Vary: Accept { “detail”: “Anmeldedaten fehlen.” }

Gehe ich extern via https://[schuldomain].de rein, dann gibts

BadRequest (400)

Wenn das SSL-Zertifikat, das der Server ausliefert, auf [schuldomain].delautet, dann muss dieses in die UCRVs oben eingetragen werden.

Wo müssen denn noch welche gesetzt werden?
Hier zeigen die Einträge in den UCR-Variablen

  • apache2/ssl/certificate
  • apache2/ssl/certificate-certfivatechain
  • apache2/ssl/key

alle auf /etc/unvention/letsencryt - Nextcloud, RocketChat & Wekan laufen übrigens super via https

Mastodon