SAML-Zertifikat


#1

Hallo zusammen,

ich bin gerade dabei meine domäne neu aufzusetzen. Ich habe einen neuen DC-Master und DC-Backup erstellt. Die Zertifikate habe ich um Aliase erweitert. In der Systemdiagnose bekomme ich die Meldung:
“Das Zertifikat des SAML Identity Providers stimmt nicht überein.”
Ich habe schon nach der Anleitung Renewing the SSL certificates die Zertifikate erneuert und auch den Punkt “SAML SSO” beachdet. Die Diagnose bleibt auf den Master und Backup die selbe. Für mich sind die Zertifikate identisch. Was kann ich noch machen?

Gruß,
Thomas


#2

Hallo
https://forge.univention.org/bugzilla/show_bug.cgi?id=47047#c0 schlägt vor, als automatisierte Lösung in diesem Fall univention-run-join-scripts --force --run-scripts 92univention-management-console-web-server zu machen.
Das ist ja nun der letzte Schritt der von Ihnen verlinkten Anleitung. Wenn Sie den so ausgeführt haben, sollte man auf jeden Fall erst einmal prüfen, auf welche IP-Adressen der DNS A-record “ucs-sso” zeigt und ob alle dort gelisteten Server in derselben Art und Weise reagieren.
Wenn ich die Testroutine (/usr/share/pyshared/univention/management/console/modules/diagnostic/plugins/04_saml_certificate_check.py) richtig verstehe, probiert sie in der Funktion test_identity_provider_certificate() alle IP-Adressen hinter den, was in ucs/server/sso/fqdn steht, durch. Leider sagt die Fehlermeldung nicht, bei welchem der Probanden der Test fehlschlägt.
Für den Moment muß man dann wohl alle Hosts manuell prüfen.

Vielleicht kommen Sie ja mit den vorliegenden Informationen schon etwas weiter.


#3

Hallo Herr Arnke,

hat geholfen. Die Plugins hatte ich noch nicht gefunden.

Auf 172.16.10.10, der DC-Master, und 172.16.10.11, der DC-Slave.

Ja, beide sagen : Das Zertifikat des SAML Identity Providers stimmt nicht überein.

Ich habe das Scrit auf der Console aufgerufen

Traceback (most recent call last):
  File "/usr/share/pyshared/univention/management/console/modules/diagnostic/plugins/04_saml_certificate_check.py", line 119, in <module>
    run(0)
  File "/usr/share/pyshared/univention/management/console/modules/diagnostic/plugins/04_saml_certificate_check.py", line 76, in run
    test_identity_provider_certificate()
  File "/usr/share/pyshared/univention/management/console/modules/diagnostic/plugins/04_saml_certificate_check.py", line 95, in test_identity_provider_certificate
    raise Critical(_('The certificate of the SAML identity provider does not match.'))
univention.management.console.modules.diagnostic.Critical: The certificate of the SAML identity provider does not match.

Folgendes habe ich kontrolliert:

/172.16.10.10/etc/univention/ssl/ucs-sso.lan.thhoe.de/cert.pem <> /172.16.10.10/etc/simplesamlphp/ucs-sso.lan.thhoe.de-idp-certificate.crt :ok:

/172.16.10.10/etc/simplesamlphp/ucs-sso.lan.thhoe.de-idp-certificate.crt <> /172.16.10.11/etc/simplesamlphp/ucs-sso.lan.thhoe.de-idp-certificate.crt :ok:

/172.16.10.10/usr/share/univention-management-console/saml/idp/ucs-sso.lan.thhoe.de.xml <> /172.16.10.11/usr/share/univention-management-console/saml/idp/ucs-sso.lan.thhoe.de.xml :ok:

In der *.xml wird auch das Zertifikat aus ucs-sso.lan.thhoe.de-idp-certificate.crt verwendet.

Beide Server einmal Reboot gemacht, der Fehler bleibt.
Keine Ahnung was ich noch prüfen soll.

Gruß,
Thomas


#4

Dort können mehrere Zertifikate enthalten sein. Im Moment verstehe ich leider auch noch nicht komplett, woraus die xml genau gebaut wird, es muß aber durch das Joinskript geschehen, beim o.g. Renew-Prozess soll die xml gelöscht werden. Im Moment vermute ich, dass die LDAP-EInträge unter cn=saml-serviceprovider,cn=univention dafür benutzt werden. Wenn dort veraltete oder falsche Einträge oder Zertifikate liegen, dürften die dann auch in der xml stehen. udm saml/serviceprovider list könnte Aufschluss geben.


#5

Tut es, hier wird für den DC-Master und DC-Backup
/etc/univention/ssl/ucsCA/CAcert.pem
verwendet, der Memberserver aber
/etc/univention/ssl/ucs-sso.lan.thhoe.de/cert.pem.
Mit den Join-Script kann man das nicht ändern.

Gruß

Thomas


#6

Das Join-Skript macht ein udm saml/serviceprovider create ... --ignore_exists ....
Ein paar Zeilen vorher gibt es schon den Hinweis auf eine Situation, bei der der vorhandene Eintrag für den aktuellen Host während des Joins entfernt werden musste.
Man sollte demzufolge dieses Objekt auch ziemlich gefahrlos löschen können. Der Join legt es dann wieder an (Ungetestet!)

Ob es hilft, liegt dann daran, ob /usr/share/univention-management-console/saml/update_metadata das korrekte Zertifikat (via /usr/share/univention-management-console/saml/sp.py holt.
Im letzgenannten Skript sehe ich

  "cert_file": "/etc/univention/ssl/%s/cert.pem" % (fqdn,),

Was die Frage aufwirft, warum beim Master und beim Backup CAcert.pem verwendet wird.


#7

Da war ich etwas voreilig. Die ersten 8 Zeichen stimmen überein, das komplette Zertifikat habe ich nicht geprüft.

Mittlerweile bin ich der Ursache nähergekommen. Ich habe noch einmal von vorne begonnen (neuer Master, neue Domäne). Die Systemdiagnose meldet Fehler, sobald ich für den Master das Zertifikat anpasse (Alias eintrage) und neu erzeuge. SSO funktioniert, nur die Systemdianose sagt Fehler.
Das sagt sie allerdings auch, wenn keine SAML identity provider definiert sind. Kann es sich hier um einen Bug in der Systemdiagnose handeln?

Gruß

Thomas


#8

Ich habe mir mal mit jemandem, der mehr von Programmierung versteht, die Testroutine test_identity_provider_certificate() angesehen.

for idp in glob.glob('/usr/share/univention-management-console/saml/idp/*.xml'):
                                        with open(idp) as fd:
                                                cert = find_node(fromstring(fd.read()), '{http://www.w3.org/2000/09/xmldsig#}X509Certificate')
                                                if cert.text.strip() not in certificate:
                                                        raise Critical(_('The certificate of the SAML identity provider does not match.'))

Wenn wir nicht komplett falsch liegen (und auch find_node() richtig verstehen, wird dort nur das erste Zertifikat aus der XML mit dem vorher via https geholten verglichen. Ich sehe aber zumindest in einer Umgebung an dieser Position XML-Dateien, die mehrere Zertifikate enthalten.


#9

Hallo,

nach der Neuinstallation scheint überall dasselbe Zertifikat (/etc/univention/ssl/ucs-sso.lan.thhoe.de/cert.pem) verwendet zu werden, aber die Systemdiagnose meldet diesen kritischen Fehler.
SSO funktioniert auch überall, deshalb gehe ich mittlerweile von einem Bug in de Systemdiagnose aus.
Wenn noch Informationen gewünscht werden, um das Verhalten nachvollziehn zu können. Helfe ich gerne weiter. Ich werde die Fehlermeldung vorläufig ignorieren.

Gruß
Thomas