2016-05-11 25 views
2

Ich bin neu bei SAML und bin verwirrt über die erwartete Signatur und Vertrauensprozess.Wie überprüft man SAML-Zertifikate?

Ich programmiere ein SP und erhalten ein signiertes samlp:Response vom IDP, dass das umfasst KeyInfo:

<KeyInfo> 
    <ds:X509Data> 
     <ds:X509Certificate> 
      MIIC4DCCAcigAwIBAgIQRzFzcQiEKpFD2C+gNZ8cFDANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDEyFBREZTIFNpZ25pbmcgLSB0ZXN0Lmx1Y2lkYXV0aC5jb20wHhcNMTYwNTA2MDcyODM5WhcNMTcwNTA2MDcyODM5WjAsMSowKAYDVQQDEyFBREZTIFNpZ25pbmcgLSB0ZXN0Lmx1Y2lkYXV0aC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDqng7wxIkT7VpVJhQYgwWMngST4EhxWha+vI9/5V+D0nWZXp6MIMiFO7rv0n4+og7fdVXHjK9wL4cG9MVUMFpV8cxl7lmwKC/EomPbdsHZfCQ4QE/M+jHUDRoyeqSZgUO1oMigz65FzSdtRoM6A3TKasU5+ISttvGx66gkP5wuQUllBfDJxuVA+5qPVLas5/0s/CCyVbKPDqYwn/GMKsTc1ECy8oEeBOrfRzEsQrqlkLcoriMXYIRW92j4MWUTnz3Ce4zTGPldPl2ix/dVk02MoJEgK7NTDru+2yvo0QDIvzWWs0rltF26UdABqsiq+uuwYiKkGQpBldyjfqVvmwChAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKeywqRnNuBGaNB6k6wuDAK6Aknx28RXbJAMe9SkSAo6L16qbdRdL8JCGZCDRF7OI8GLMEZj+yStRPikEstBQYeOi+1OSDf6iqOr7LM/OURG3pNq/LUOdNJJcYUSuK3FPP4HSMOo6dOX5IHS+7OOh70CMg5dfdtjvHqb8ZsRUk30JX9nVcXXRO8Vqzgb7WjuVjGvz/zSR6Dy+f+N6UDerIauQxHPu81SasxEUE4R6pr/Tm80E6uoicp7VBtE8YGHBhag9c+rp/xLANJ+Oc0poKDvLr8odnlUvEgy5RQhqbPefQ9n8E5Pba2IA0w/tfsk0w/z2jNwgLzNCfJGyrGHiH4= 
     </ds:X509Certificate> 
    </ds:X509Data> 
</KeyInfo> 

Ich gehe davon aus, dass das Zertifikat enthalten ist, so dass ich muss nicht erraten, was Zertifikat die Antwort unterzeichnet .

Aber das scheint im Moment nicht sehr nützlich. Es scheint nicht, dass die Zertifikatskette enthalten ist. Daher kann ich der Antwort nicht wirklich vertrauen.

Ich nehme an, das Zertifikat könnte mir über ein zweites, vertrauenswürdiges Out-of-Band-Protokoll gegeben werden, aber das scheint nicht die richtige Lösung zu sein, da das jedes Mal wiederholt werden muss, wenn das Zertifikat abläuft.

Wenn eine X509-Kette (z. B. SSL) angegeben wird, ist dies ein triviales Problem zu lösen.

Welche Methode wird empfohlen, um die Vertrauenswürdigkeit eines X509-Zertifikats zu überprüfen, da das Zertifikat möglicherweise abläuft?

+0

Sie signieren mit dem privaten Schlüssel und Sie fügen Ihren öffentlichen Schlüssel an, damit die Signatur verifiziert werden kann ... –

+0

Mögliches Duplikat von [SAML: Warum ist das Zertifikat in der Signatur?] (Http://stackoverflow.com/ Fragen/1703301/saml-Warum-ist-das-Zertifikat-in-der-Unterschrift) –

+0

@DavidBrossard, die oberste Antwort sagt "Das überprüft nur, dass die Nachricht von, wer es sagt, ist es. * Sie müssen eine zusätzliche Überprüfung, dass Die Nachricht stammt von jemandem, dem Sie vertrauen. * ", ohne CA, Ketten oder abgelaufene Zertifikate zu adressieren. –

Antwort

2

Ich nehme an, das Zertifikat könnte mir über ein zweites, vertrauenswürdiges Out-of-Band-Protokoll gegeben werden.

Das ist typisch für SAML-Implementierungen. SAML verwendet die Zertifikatsinfrastruktur als "hochgradig generisches und erweiterbares Mittel zur Kommunikation von Schlüsselmaterial. Diese Spezifikation nimmt keine Stellung zum erlaubten oder vorgeschlagenen Inhalt dieses Elements und auch nicht zur Bedeutung für eine vertrauende Seite. Als konkretes Beispiel, keine Implikationen von einschließlich eines X.509-Zertifikats nach Wert oder Referenz ist davon auszugehen, dass deren Gültigkeitsdauer, Erweiterungen, der Widerrufsstatus und andere relevante Inhalte nach dem Ermessen der vertrauenden Partei durchgesetzt werden können oder nicht. "

als das muss jedes Mal wiederholt werden, wenn das Zertifikat abläuft.

Da der Ablauf in der Regel nicht erzwungen wird, ist das egal. Wichtig ist, wenn sich die Schlüssel ändern (Key Rollover). Um das zu handhaben, werden die Zertifikate normalerweise aus Metadaten geladen, die von dem Idp veröffentlicht werden. Das bedeutet, dass letztendlich das TLS-Zertifikat des Metadatenendpunkts auf dem Idp die Basis für die Vertrauensstellung ist.

Es gibt auch Fälle, in denen TLS nicht vertrauenswürdig genug ist (ich habe es im Gesundheitswesen erlebt) und wo Zertifikate nur über einen sicheren Out-of-Band-Kommunikationskanal ausgetauscht werden (z. B. persönliche Treffen).