Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision |
de:shibidp:config-encryption [2020/09/03 09:10] – [Liste betroffener Service Provider] Silke Meyer | de:shibidp:config-encryption [2023/08/14 12:04] – [Algorithmus pro Profil setzen, Variante] Wolfgang Pempe |
---|
| <- de:shibidp:config-sealer|Secret Key-Management ^ de:shibidp:uebersicht|Überblick: Tutorial zur IdP-Inbetriebnahme ^ de:production|Produktivbetrieb -> |
| ~~NOTOC~~ |
| |
====== Konfiguration des Verschlüsselungsalgorithmus ====== | ====== Konfiguration des Verschlüsselungsalgorithmus ====== |
| |
| {{INLINETOC 2}} |
| |
Ab Shibboleth IdP 3.4 wurde eine Einstellung aufgenommen, mit der der Algorithmus eingestellt werden kann, mit dem die Assertions verschlüsselt werden. Der alte Standard-Algorithmus AES-CBC gilt nicht mehr als sicher, daher ist bei neu installierten IdPs ab Version 4.x die Voreinstellung AES-GCM. | Ab Shibboleth IdP 3.4 wurde eine Einstellung aufgenommen, mit der der Algorithmus eingestellt werden kann, mit dem die Assertions verschlüsselt werden. Der alte Standard-Algorithmus AES-CBC gilt nicht mehr als sicher, daher ist bei neu installierten IdPs ab Version 4.x die Voreinstellung AES-GCM. |
| |
<callout color="#ff9900" title="Problem"> | <callout color="#ff9900" title="Problem"> Einige Nicht-Shibboleth-Service Provider können mit dem aktuell als sicher betrachteten Algorithmus AES-GCM noch nicht umgehen. </callout> |
Einige Nicht-Shibboleth-Service Provider können mit dem aktuell als sicher betrachteten Algorithmus AES-GCM noch nicht umgehen. | |
</callout> | |
| |
Als IdP-Betreiber*in müssen Sie sich daher überlegen, welchen Weg Sie beschreiten wollen: | Als IdP-Betreiber*in müssen Sie sich daher überlegen, welchen Weg Sie beschreiten wollen: |
| |
- Sie können - unabhängig von dem globalen Setting Ihres IdPs - verschiedene SAML-Profile anlegen, in denen Sie den jeweiligen Algorithmus explizit mitgeben. Dies geht in beide Richtungen: | - Sie können - unabhängig von dem globalen Setting Ihres IdPs - verschiedene SAML-Profile anlegen, in denen Sie den jeweiligen Algorithmus explizit mitgeben. Dies geht in beide Richtungen: |
* __Bei globaler Verwendung des sicheren Algorithmus können Sie Ausnahmen für SPs konfigurieren, bei denen noch AES-CBC verwendet werden soll__ **(empfohlen)**. | * __Bei globaler Verwendung des sicheren Algorithmus können Sie Ausnahmen für SPs konfigurieren, bei denen noch AES-CBC verwendet werden soll__**(empfohlen)**. |
* Bei globaler Verwendung des unsicheren Algorithmus können Sie Ausnahmen für solche SPs definieren, die bereits AES-GCM sprechen. | * Bei globaler Verwendung des unsicheren Algorithmus können Sie Ausnahmen für solche SPs definieren, die bereits AES-GCM sprechen. |
- Grundsätzlich könnten die jeweils unterstützten Verschlüsselungsalgorithmen auch in den IdP-/SP-Metadaten über ein entsprechendes Element (''<EncryptionMethod>'') deklariert werden. Der Shibboleth IdP ist z.B. anhand dieser Angabe in der Lage, eine Assertion gemäß AES-CBC zu verschlüsseln, auch wenn AES-GCM als Default gesetzt ist. Bislang wird dieses Element **noch nicht von der DFN-AAI Metadatenverwaltung unterstützt**. Wir arbeiten daran, die Metadatenverwaltung entsprechend zu erweitern. In den von der DFN-AAI verteilten eduGAIN-Metadaten ist das Element ''<EncryptionMethod>'' bereits fallweise enthalten und wird von IdPs dann auch ausgewertet (z.B. bei cat.eduroam.org). | - Grundsätzlich könnten die jeweils unterstützten Verschlüsselungsalgorithmen auch in den IdP-/SP-Metadaten über ein entsprechendes Element (''<EncryptionMethod>'') deklariert werden. Der Shibboleth IdP ist z.B. anhand dieser Angabe in der Lage, eine Assertion gemäß AES-CBC zu verschlüsseln, auch wenn AES-GCM als Default gesetzt ist. Bislang wird dieses Element **noch nicht von der DFN-AAI Metadatenverwaltung unterstützt**. Wir arbeiten daran, die Metadatenverwaltung entsprechend zu erweitern. In den von der DFN-AAI verteilten eduGAIN-Metadaten ist das Element ''<EncryptionMethod>'' bereits fallweise enthalten und wird von IdPs dann auch ausgewertet (z.B. bei cat.eduroam.org). |
- Sie können global auf den unsicheren Algorithmus zurückgehen, in dem Bewusstsein, dass die Verschlüsselung angreifbar ist **(nicht empfohlen)**. | - Sie können global auf den unsicheren Algorithmus zurückgehen, in dem Bewusstsein, dass die Verschlüsselung angreifbar ist **(nicht empfohlen)**. |
| |
===== Liste betroffener Service Provider ===== | ===== Liste betroffener Service Provider ===== |
Wir bemühen uns, die Liste der diesbezüglichen Entity IDs möglichst aktuell zu halten. Hinweise an [[hotline@aai.dfn.de|hotline@aai.dfn.de]] sind sehr willkommen! | |
* Springer Nature: https://fsso.springer.com | Wir bemühen uns, die Liste der diesbezüglichen Entity IDs möglichst aktuell zu halten. Hinweise an [[hotline@aai.dfn.de|]] sind sehr willkommen! |
* GWDG: https://sso.gwdg.de/ssp, https://sso.academiccloud.de/ssp | |
* GÉANT SP Proxy: https://terena.org/sp | * <del>ACS Publications: [[https://pubs.acs.org/shibboleth|https://pubs.acs.org/shibboleth]]</del> |
| * <del>AIP Scitation: [[https://scitation.aip.org/shibboleth|https://scitation.aip.org/shibboleth]]</del> |
| * <del>Atypon (Proxy für verschiedene Verlage): [[https://iam.atypon.com/shibboleth|https://iam.atypon.com/shibboleth]]</del> |
| * <del>Brill Online Books and Journals: [[https://booksandjournals.brillonline.com/shibboleth|https://booksandjournals.brillonline.com/shibboleth]]</del> |
| * Brockhaus https://auth.brockhaus.de/samlauth und https://auth.brockhaus.at/samlauth |
| * <del>Cambridge Journals Online: [[https://shibboleth.cambridge.org/shibboleth-sp|https://shibboleth.cambridge.org/shibboleth-sp]]</del> |
| * Cisco Webex Tenant SPs |
| * Citavi Web: [[https://citaviweb.citavi.com/shibboleth|https://citaviweb.citavi.com/shibboleth]] |
| * De Gruyter: [[https://www.degruyter.com/shibboleth|https://www.degruyter.com/shibboleth]] <del>und https://www.degruyter.com/ssp</del> |
| * Dropbox: https://dropbox.com/sp |
| * <del>Elsevier: [[https://sdauth.sciencedirect.com/|https://sdauth.sciencedirect.com/]]</del> |
| * <del>Emerald Insight: [[https://sp.emerald.com/sp|https://sp.emerald.com/sp]]</del> |
| * Fiori: https://fiori.fhhrz.net (und wahrscheinlich https://test-fiori.fhhrz.net) |
| * <del>GÉANT SP Proxy: [[https://terena.org/sp|https://terena.org/sp]]</del> |
| * <del>Hanser E-Library: [[https://www.hanser-elibrary.com/shibboleth|https://www.hanser-elibrary.com/shibboleth]]</del> |
| * Highwire (Proxy für verschiedene Verlage): [[https://shibboleth.highwire.org/entity/secure-sp|https://shibboleth.highwire.org/entity/secure-sp]] |
| * Hirzel: https://elibrary.hirzel.de |
| * Hogrefe E-Library: [[https://elibrary.hogrefe.de|https://elibrary.hogrefe.de]] |
| * IOPScience Online Services: [[https://ticket.iop.org/shibboleth|https://ticket.iop.org/shibboleth]] |
| * Jobteaser-SPs (alle Tenant-SPs) |
| * <del>Karger Publishers: [[https://www.karger.com/oa/entity|https://www.karger.com/oa/entity]]</del> |
| * Landesnetz Rheinland-Pfalz: https://login.rlp.net/adfs/services/trust |
| * Meiner E-Library: [[https://meiner-elibrary.de|https://meiner-elibrary.de]] |
| * <del>Narr eLibrary: [[https://elibrary.narr.digital|https://elibrary.narr.digital]]</del> |
| * Nature Publishing: [[https://secure.nature.com/shibboleth|https://secure.nature.com/shibboleth]] |
| * <del>Ovid: https://shibboleth.ovid.com/entity</del> |
| * SOP Hilmbauer & Mauberger GmbH & Co KG, Amstetten: https://www.service4mobility.com/europe |
| * <del>Springer Nature: [[https://fsso.springer.com|https://fsso.springer.com]]</del> |
| * Steiner E-Library: [[https://elibrary.steiner-verlag.de|https://elibrary.steiner-verlag.de]] |
| * Thieme: https://prd.thieme.de/shibboleth-sp |
| * Thomson Reuters - Web of Knowledge and EndNote Web: [[https://sp.tshhosting.com/shibboleth|https://sp.tshhosting.com/shibboleth]] |
| * <del>Toolbox Lehrerbildung: https://toolbox-edx.edu.tum.de/shibboleth</del> |
| * Wiley Online Library: [[https://sp.onlinelibrary.wiley.com/shibboleth|https://sp.onlinelibrary.wiley.com/shibboleth]] |
| |
===== Standard-Algorithmen in den Versionen ab 3.4 ===== | ===== Standard-Algorithmen in den Versionen ab 3.4 ===== |
* **IdP 3.4:** alter Standard ''shibboleth.EncryptionConfiguration.CBC'' | |
* **upgegradeter IdP 4.x:** alter Standard, wenn der Algorithmus nicht manuell hochgesetzt wird | |
* **neu installierter IdP 4.x:** neuer Standard ''shibboleth.EncryptionConfiguration.GCM'' | |
| |
| * **IdP 3.4:** alter Standard ''shibboleth.EncryptionConfiguration.CBC'' |
| * **upgegradeter IdP 4.x:** alter Standard, wenn der Algorithmus nicht manuell hochgesetzt wird |
| * **neu installierter IdP 4.x:** neuer Standard ''shibboleth.EncryptionConfiguration.GCM'' |
===== Algorithmus global setzen ===== | ===== Algorithmus global setzen ===== |
In der Datei ''./conf/idp.properties'' gibt es eine neue Einstellung, um global, also für alle Service Provider, die Verwendung eines einheitlichen Verschlüsselungsalgorithmus festzulegen. (Verwenden Sie nur //eine// der beiden Zeilen!) <file properties ./conf/idp.properties> | |
| In der Datei ''./conf/idp.properties'' gibt es eine neue Einstellung, um global, also für alle Service Provider, die Verwendung eines einheitlichen Verschlüsselungsalgorithmus festzulegen. (Verwenden Sie nur //eine// der beiden Zeilen!) |
| |
| <file properties ./conf/idp.properties> |
# alter Algorithmus AES-CBC: | # alter Algorithmus AES-CBC: |
idp.encryption.config=shibboleth.EncryptionConfiguration.CBC | idp.encryption.config=shibboleth.EncryptionConfiguration.CBC |
# oder neuer Algorithmus AES-GCM: | # oder neuer Algorithmus AES-GCM: |
idp.encryption.config=shibboleth.EncryptionConfiguration.GCM | idp.encryption.config=shibboleth.EncryptionConfiguration.GCM |
| |
| |
</file> | </file> |
| |
===== Algorithmus pro Profil setzen ===== | ===== Algorithmus pro Profil setzen ===== |
Die folgenden zwei Beispiele zeigen, wie Sie für einen oder mehrere IdPs den alten Algorithmus erlauben (Quelle: https://wiki.shibboleth.net/confluence/display/IDP4/SecurityConfiguration). | |
| |
<file xml ./conf/relying-party.xml> | Die folgenden zwei Beispiele zeigen, wie Sie für einen oder mehrere SPs den alten Algorithmus erlauben (Quelle: [[https://wiki.shibboleth.net/confluence/display/IDP4/SecurityConfiguration|https://wiki.shibboleth.net/confluence/display/IDP4/SecurityConfiguration]]). |
| |
| ==== Entity IDs ==== |
| |
| <file xml ./conf/relying-party.xml> |
<util:list id="shibboleth.RelyingPartyOverrides"> | <util:list id="shibboleth.RelyingPartyOverrides"> |
| |
<bean parent="RelyingPartyByName" c:relyingPartyIds="HIER-DIE-ENTITYID-DES-SP"> | <bean parent="RelyingPartyByName" c:relyingPartyIds="#{{'HIER-DIE-ENTITYID-EINES-SP', 'ENTITYID-EINES-WEITEREN-SP', '...usw....'}}"> |
<property name="profileConfigurations"> | <property name="profileConfigurations"> |
<list> | <list> |
<bean parent="Shibboleth.SSO" p:securityConfiguration-ref="shibboleth.SecurityConfiguration.CBC" /> | |
<bean parent="SAML2.SSO" p:securityConfiguration-ref="shibboleth.SecurityConfiguration.CBC" /> | <bean parent="SAML2.SSO" p:securityConfiguration-ref="shibboleth.SecurityConfiguration.CBC" /> |
<bean parent="SAML2.ECP" p:securityConfiguration-ref="shibboleth.SecurityConfiguration.CBC" /> | <bean parent="SAML2.ECP" p:securityConfiguration-ref="shibboleth.SecurityConfiguration.CBC" /> |
</property> | </property> |
</bean> | </bean> |
| |
</util:list> | </util:list> |
| |
| |
</file> | </file> |
| |
Ein Beispiel mit mehreren SP-EntityIDs, mit den Angaben für Post Authentication Flows und NameID-Formate, aber ohne ECP-Schnittstelle und ohne die Erlaubnis für Attribute Queries würde so aussehen: | ==== Entity Category ==== |
| |
| Hier ein Beispiel, bei dem die abweichende Profil-Konfiguration über die [[http://aai.dfn.de/category/no-aes-gcm-support|Entity Category http://aai.dfn.de/category/no-aes-gcm-support]] gesteuert wird. Die Zuordnung zu dieser Entity Category wird zentral über eine Liste gesteuert, die die [[#liste_betroffener_service_provider|o.g. Entity IDs]] enthält. Hierbei werden auch SPs erfasst, die über die [[de:edugain#konfiguration_idp_sp_aa|eduGAIN Downstream-Metadaten]] in die DFN-AAI kommen. \\ |
| **Die sonstigen Einstellungen/Parameter müssen den lokalen Bedürfnissen bzw. Gegebenheiten angepasst werden!** |
| |
<file xml ./conf/relying-party.xml> | <file xml ./conf/relying-party.xml> |
<util:list id="shibboleth.RelyingPartyOverrides"> | <util:list id="shibboleth.RelyingPartyOverrides"> |
| |
<bean parent="RelyingPartyByName" c:relyingPartyIds="#{{'ENTITYID1', 'ENTITYID2', 'ENTITYID3'}}"> | <bean parent="RelyingPartyByTag"> |
| <constructor-arg name="candidates"> |
| <list> |
| <bean parent="TagCandidate" c:name="http://macedir.org/entity-category" |
| p:values="http://aai.dfn.de/category/no-aes-gcm-support"/> |
| </list> |
| </constructor-arg> |
<property name="profileConfigurations"> | <property name="profileConfigurations"> |
<list> | <list> |
</property> | </property> |
</bean> | </bean> |
| |
</util:list> | </util:list> |
| |
| |
</file> | </file> |
| |
===== Verwendeten Algorithmus im Log nachvollziehen ===== | ===== Algorithmus pro Profil setzen, Variante ===== |
Der IdP loggt im Loglevel DEBUG u.a. die verschlüsselten Assertions. Dort finden Sie den verwendeten Algorithmus (Ausschnitt gekürzt):<file bash idp-process.log> | |
| Der Algorithmus kann im IDP 4.x auch in der metadata-providers.xml Datei gesetzt werden. In manchen Konfigurationen kann das zur Übersichtlichkeit beitragen, z.B. wenn die relying-party.xml sowieso schon umfangreich ist. |
| |
| <file xml ./conf/metadata-providers.xml> |
| <!-- Metadaten aller SPs der DFN-AAI Produktivföderation --> |
| <MetadataProvider id="DFN_AAI" |
| xsi:type="FileBackedHTTPMetadataProvider" |
| backingFile="%{idp.home}/metadata/DFN-AAI-sp-metadata.xml" |
| metadataURL="https://www.aai.dfn.de/metadata/dfn-aai-sp-metadata.xml" |
| maxRefreshDelay="PT2H"> |
| |
| <MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true" |
| certificateFile="%{idp.home}/credentials/dfn-aai.g2.pem"/> |
| |
| <MetadataFilter xsi:type="Algorithm"> |
| <md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" /> |
| <Entity>https://auth.brockhaus.de/samlauth</Entity> |
| <Entity>https://auth.brockhaus.at/samlauth</Entity> |
| <Entity>https://citaviweb.citavi.com/shibboleth</Entity> |
| <Entity>https://www.degruyter.com/shibboleth</Entity> |
| <Entity>https://dropbox.com/sp</Entity> |
| <Entity>https://fiori.fhhrz.net</Entity> |
| <Entity>https://test-fiori.fhhrz.net</Entity> |
| <Entity>https://shibboleth.highwire.org/entity/secure-sp</Entity> |
| <Entity>https://elibrary.hirzel.de</Entity> |
| <Entity>https://elibrary.hogrefe.de</Entity> |
| <Entity>https://ticket.iop.org/shibboleth</Entity> |
| <Entity>https://login.rlp.net/adfs/services/trust</Entity> |
| <Entity>https://meiner-elibrary.de</Entity> |
| <Entity>https://secure.nature.com/shibboleth</Entity> |
| <Entity>https://www.service4mobility.com/europe</Entity> |
| <Entity>https://elibrary.steiner-verlag.de</Entity> |
| <Entity>https://prd.thieme.de/shibboleth-sp</Entity> |
| <Entity>https://sp.tshhosting.com/shibboleth</Entity> |
| <Entity>https://sp.onlinelibrary.wiley.com/shibboleth</Entity> |
| </MetadataFilter> |
| |
| </MetadataProvider> |
| |
| </file> |
| |
| ===== Verwendeten Algorithmus im IdP-Log nachvollziehen ===== |
| |
| Ein neu installierter IdP 4.x loggt den verwendeten Algorithmus ins ''idp-audit.log'':<file bash idp-audit.log> |
| 127.0.0.2|2020-11-25T09:18:42.067973Z|2020-11-25T09:18:53.319425Z|pingel|https://sp2.local/shibboleth|_f3f9070c525b2e7898b61e4a9c0e3a4b|password|2020-11-25T09:18:47.055896Z|eduPersonEntitlement,samlSubjectID,samlPairwiseID,mail,eduPersonScopedAffiliation|||false|false|AES128-GCM|Redirect|POST||Success||759afa9ead212d7d7f928be18669ff55af4009d6309491145bfcd8c74c5200d8|Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0</file> |
| |
| Um dieses Logging-Verhalten auch in einem von 3.x aktualisierten IdP 4.x zu bekommen, können Sie die Datei ''conf/audit.xml'' durch die Datei ''dist/conf/audit.xml'' ersetzen. |
| |
| Außerdem loggt der IdP im Loglevel DEBUG für ''idp.loglevel.messages'' die verschlüsselten Assertions. Dort finden Sie den verwendeten Algorithmus (Ausschnitt gekürzt): |
| |
| <file bash idp-process.log> |
[...] | [...] |
<saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"> | <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"> |
</file> | </file> |
| |
**Die Basis-Konfiguration des IdPs ist damit abgeschlossen.** Nehmen Sie Ihren IdP jetzt in [[de:production|Produktivbetrieb]]. | ===== Unterstützte Algorithmen am SP prüfen ===== |
| |
| Bei **Shibboleth SPs** finden Sie die Liste der unterstützten Verschlüsselungsalgorithmen über den Metadata Handler (/Shibboleth.sso/Metadata) in den Elementen namens <EncryptionMethod>. |
| |
| Bei **anderen SP-Implementierungen** existieren i.d.R. ähnliche Mechanismen. Ansonsten hilft ein Blick in die Dokumentation der betreffenden SP-Software oder eine Anfrage beim Customer Support des Herstellers bzw. Plattformbetreibers. |
| |
| {{tag>idp4 tutorial aes-gcm algorithmus verschlüsselung included-in-ansible}} |
| |
{{tag>idp4 tutorial}} | |