Show TOC

X.509-basierte Anmeldung am NetWeaver AS über den SAP Web DispatcherLocate this document in the navigation structure

Verwendung

Einführung

Bei End-to-End SSL terminiert der SAP Web Dispatcher den SSL-Datenstrom nicht. Das Client-Zertifikat wird (nach der SSL-Terminierung) im ICM des Applikationsservers extrahiert und zum Applikationsserver (AS ABAP oder AS Java) transportiert. Dort kann das Client-Zertifikat des Benutzers zur Anmeldung benutzt werden.

Wenn der SAP Web Dispatcher jedoch SSL terminiert, liegt das (öffentliche) Zertifikat des Benutzers im Web Dispatcher entpackt vor und muss nun gesichert zum Applikationsserver gelangen.

Um das X.509-Client-Zertifikat am Applikationsserver zur Anmeldung benutzen zu können, muss es (über einen abgesicherten Kanal) zum ICM des Applikationsservers transportiert werden.

Hierzu werden die Zertifikatsdaten vom Web Dispatcher in den HTTP-Header geschrieben.

Für den Applikationsserver gibt es also die folgenden Anwendungsfälle:

  1. Der Client ist direkt mit dem ICM des Applikationsservers verbunden bzw. über einen Web Dispatcher, der für End-to-End-SSL konfiguriert ist. Dann werden die Zertifikatsdaten der SSL-Verbindung für die Anmeldung verwendet.

  2. Der Web Dispatcher terminiert SSL und leitet die Zertifikatsdaten im HTTP-Request-Header weiter. Hierbei wird dringend empfohlen, SSL-Terminierung mit Wiederverschlüsselung zu konfigurieren, um die Zertifikatsdaten sicher zu übertragen.

    Um eine Vertrauensbeziehung zwischen Web Dispatcher und ICM herzustellen, benötigt der Web Dispatcher für die SSL-Verbindung zum ICM ein X.509 Client-Zertifikat.

Problem

Wenn der Web Dispatcher die SSL-Headerfelder setzt und ein Client-Zertifikat zur Authentifizierung am ICM verwendet, darf der ICM dieses Zertifikat nicht für zur Benutzer-Authentisierung des Clients verwenden.

Lösung

Wenn der ICM des Applikationsservers SSL-Informationen über HTTP-Headerfelder bekommt, haben diese eine höhere Priorität als Zertifikatsdaten aus der SSL-Verbindung. Der Web Dispatcher muss immer SSL-Headerfelder hinzufügen, wenn die Verbindung zwischen Client und Web Dispatcher SSL-verschlüsselt war.

Realisierung

Datenübertragung und Formate

Der Web Dispatcher kann die folgenden HTTP-Headerfelder (SSL-Headerfelder) zu einem HTTP-Request hinzufügen.

Name des Headerfeldes

Wert

Format

SSL_CLIENT_CERT

Client-Zertifikat

Base64-kodierte Daten, eine Zeile, keine Zusätze ( -----BEGIN..., -----END..., keine Formatierung ( CR, LF, HT

,...)

SSL_CLIENT_CERT_CHAIN_1

Erstes Nicht-Wurzel-CA-Zertifikat der CA, die das Client-Zertifikat ausstellte

gleich wie SSL_CLIENT_CERT

SSL_CLIENT_CERT_CHAIN_n

Letztes Nicht-Wurzel-CA-Zertifikat

gleich wie SSL_CLIENT_CERT

SSL_CLIENT_CERT_CHAIN_n+1

Dieses Element wäre das entsprechende Wurzelzertifikat. Es darf nicht zum Server übertragen werden.

gleich wie SSL_CLIENT_CERT

SSL_CIPHER_USEKEYSIZE

Anzahl der tatsächlich verwendeten Verschlüsselungsbits

Numerischer Dezimalwert, der als Zeichenkette übertragen wird (z.B. 0, 40, 56, 128, 168)

SSL_CIPHER_SUITE

Cipher-Suite gemäß Definition in der SSL- und TLS-Spezifikation (draft-freier-ssl-version3-02 bzw. RFC 2246)

Die Cipher-Suite besteht aus zwei numerischen 8-Bit-Werten (SSL 3.0 / TLS).

Vertrauensbeziehung zwischen SAP Web Dispatcher und ICM am Applikationsserver

Die Vertrauensbeziehung zwischen SAP Web Dispatcher und ICM basiert auf einem Client-Zertifikat, das der Web Dispatcher für die SSL-Verbindung benutzt. Dieses Web Dispatcher Zertifikat benutzt der ICM, um zu entscheiden, ob der Vorgänger ( „intermediate“) vertrauenswürdig ist oder nicht.

Hinweis

Dieses Client-Zertifikat sollte nicht für die Benutzer-Authentifizierung im Applikationsserver benutzt werden!

Der erste Server in der Kette der Netzwerk-Stationen, der die SSL-Verbindung vom Browser terminiert, muss die SSL-Headerfelder zum HTTP-Request hinzufügen. Die folgenden Stationen in der Kette müssen diese Information zum Applikationsserver weiterleiten, wo sie zur Benutzer-Authentifizierung benötigt wird.

Die SSL-Headerfelder enthalten sicherheitskritische Daten, die ohne weitere Prüfung zur Anmeldung auf dem Applikationsserver genutzt werden. Um die Manipulation dieser Daten zu verhindern, müssen sie sicher übertragen werden.

Aus diesem Grund muss jede Station in der Kette (Der Applikationsserver und alle „Intermediates“) ihrem Vorgänger trauen.

Sicherheitsmaßnamen im SAP Web Dispatcher und ICM

Folgende Aktionen sollen die Sicherheit bei der Zertifikatsweiterleitung gewährleisten:

  • Bei eingehenden HTTP-Requests werden evtl. gesetzte SSL-Headerfelder gelöscht

  • Ist der Vorgänger nicht vertrauenswürdig, werden eventuell gesetzte SSL-Headerfelder gelöscht.

Konfiguration

Stellen Sie die Vertrauensbeziehung durch Konfiguration im ICM des Applikationsservers und des Web Dispatchers her:

  • ICM Konfiguration

    Setzen Sie Im Profil des ICM die folgenden Parameter, um den Web Dispatcher als vertrauenswürdigen Vorgänger ( „trusted intermediate“) zu spezifizieren:

    icm/HTTPS/trust_client_with_issuer = <issuer>

    icm/HTTPS/trust_client_with_subject = <subject>

    Stimmen <subject> und <issuer> des Web Dispatcher-Clientzertifikates mit diesen Werten überein, akzeptiert der ICM die SSL-Headerfelder, ansonsten löscht er sie.

    Wenn die SSL-Headerfelder nicht gesetzt sind, der HTTPS-Request jedoch ein eigenes Zertifikat mitbringt, wird dieses zur Anmeldung am Applikationsserver benutzt (direkte Verbindung vom Browser zum Applikationsserver oder End-to-End-SSL).

    Der Parameter muss die gesamte Zeichenkette des Zertifikats enthalten. Falls also das Zertifikat den Aussteller CN=SAP CA, O=SAP CA INT, C=DE und das Subjekt CN=sapwebdisp, O=SAP-AG, C=DE enthält, müssen die Parameter genau so gesetzt werden.

    Dabei muss jedes Zeichen übereinstimmen, auch Leerzeichen.

    Um die Konfiguration zu vereinfachen, können Wildcards angegeben werden:

    • * steht für beliebig viele Zeichen

    • ? steht für ein Zeichen

    Die folgenden Einstellungen im ICM sind möglich, werden aber aus Sicherheitsgründen nicht empfohlen.

    • Zertifikat ohne Vertrauensbeziehung akzeptieren

      Ein Spezialfall ist die Angabe von

      icm/HTTPS/trust_client_with_issuer = *

      icm/HTTPS/trust_client_with_subject = *

      Damit wird jedes Zertifikat als Client Zertifikat akzeptiert, welches zu einem der konfigurierten Wurzel-CAs ( „Trust Anchors“) passt. Es wird sogar akzeptiert, wenn der Client gar kein X.509 Zertifikat schickt.

      Achtung

      Damit ist keine Vertrauensbeziehung zwischen ICM und Web Dispatcher (oder anderem Loadbalancer) mehr gegeben! SAP rät davon ab, diese Betriebsart zu nutzen. Setzen Sie diese Parameter nur nach sorgfältiger Abwägung der Sicherheitsrisiken. Mit dieser Betriebsart kann jeder, der einen HTTPS-Request direkt an den ICM schicken kann, ein beliebiges SSL-Client-Zertifikat ohne weitere Prüfungen zur Anmeldung mitgeben.

    • Ungesichert übertragenes Zertifikat akzeptieren

      Sie können den ICM so konfigurieren, dass er auch ein Client-Zertifikat akzeptiert, das über HTTP (nicht HTTPS) übertragen wurde. Setzen Sie dazu den Parameter

      icm/accept_forwarded_cert_via_http = TRUE

      Achtung

      Die Vertrauensbeziehung und die damit verbundenen Sicherheitsmaßnahmen (Löschen der Headerfelder bei eingehenden ungesicherten HTTP-Requests) werden damit ausgehebelt. SAP rät davon ab, diese Betriebsart zu nutzen. Setzen Sie diesen Parameter nur nach sorgfältiger Abwägung der Sicherheitsrisiken auf TRUE. Mit dieser Betriebsart kann jeder, der einen ungesicherten HTTP-Request direkt an den ICM schicken kann, ein beliebiges SSL-Client-Zertifikat ohne weitere Prüfungen zur Anmeldung mitgeben.

  • Web Dispatcher Konfiguration

    Im Profil des SAP Web Dispatcher müssen Sie Parameter setzen, um SSL zu terminieren und wieder zu verschlüsseln.

    Weitere Informationen: SAP Web Dispatcher und SSL

    Folgende Parameter müssen Sie setzen, um den Request wieder mit SSL zu verschlüsseln:

    wdisp/ssl_encrypt=2

    wdisp/ssl_auth=2

    wdisp/ssl_cred= <file_name_of_client_PSE>

    Mit der Datei <file_name_of_client_PSE> wird das Clientzertifikat des Web Dispatchers angegeben. Mit diesem wird das Vertrauensverhältnis zum ICM des Applikationsservers aufgebaut.

    Setzen Sie folgenden Parameter, um das Benutzerzertifikat in die Headerfelder zu übertragen:

    icm/HTTPS/forward_ccert_as_header = true

    Dann verhält sich der Web Dispatcher wie folgt:

    • Wenn im eingehenden Request kein SSL-Headerfeld gesetzt ist und der Web Dispatcher dem Vorgänger traut, werden alle oben beschriebenen SSL-Headerfelder in dem HTTP-Request gesetzt. Wenn der Client nicht vertrauenswürdig ist, werden nur die folgenden SSL-Headerfelder gesetzt: SSL_CIPHER_SUITE und SSL_CIPHER_USEKEYSIZE.

    • Falls der Web Dispatcher eines der oben beschriebenen SSL-Headerfelder bekommt, wird keine Information aus der SSL-Verbindung zu den SSL-Headerfeldern dazugefügt. Wenn der Vorgänger nicht vertrauenswürdig ist, entfernt der Web Dispatcher alle SSL-Headerfelder.

Die folgende Grafik zeigt an einem Beispiel die Konfiguration von ICM und Web Dispatcher, die es dem Benutzer vom Browser aus ermöglicht, sich mit seinem Client-Zertifikat am Applikationsserver anzumelden.

Abbildung 1: Beispielkonfiguration

Kaskade von SAP Web Dispatchern

Sie können mehrere SAP Web Dispatcher ( „intermediates“) hintereinander schalten. Dann muss jeder Knoten, der die SSL-Headerfelder akzeptieren soll, seinem direkten Vorgänger vertrauen. Dies können Sie über die Parameter icm/HTTPS/trust_client_with_issuer und icm/HTTPS/trust_client_with_subject auch beim Web Dispatcher steuern (s.o.).

Informationen zur Kaskadierung von Web Dispatchern finden Sie in SAP-Hinweis 740234 Auf SAP-Site veröffentlichte Informationen.