Zugriff auf TLS-Verbindungsinformationen in einem API-Proxy

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Mit Edge können Sie virtuelle Hosts erstellen, die Ein- und Zweiwege-TLS unterstützen. Mit der Einwegoption TLS, Der Client gibt eine Sitzungsanfrage an einen virtuellen Host aus, der auf einem Edge Router und dem Router bereitgestellt ist. antwortet mit einem Zertifikat, das den öffentlichen Schlüssel des virtuellen Hosts enthält. Bei einem signierten Zertifikat muss der Client kann dann bei der Zertifizierungsstelle (Certificate Authority, CA) eine Anfrage zur Authentifizierung des Zertifikats stellen.

Bei Zwei-Wege-TLS bestehen sowohl der Client als auch die Edge-Zertifikate, die im Rahmen einer Anfrage validiert werden:

  • Der Edge Router stellt dem TLS-Client sein Zertifikat zur Authentifizierung vor. Der Kunde überprüft dann die Identität des Servers, bevor das Zertifikat an den Server gesendet wird.
  • Der TLS-Client legt sein Zertifikat an Edge zur Authentifizierung vor.

Weitere Informationen finden Sie unter Informationen zu virtuellen Hosts.

TLS-Verbindungsinformationen erfassen

Während einer Anfrage an einen API-Proxy über einen virtuellen Host, der TLS unterstützt, kann Edge Informationen zur TLS-Verbindung. Ihr API-Proxy kann dann über um zusätzliche Analysen und Validierungen durchzuführen.

Die Art der von Edge erfassten TLS-Informationen hängt davon ab, ob der virtuelle Host unterstützt oder Zwei-Wege-TLS. Bei Einweg-TLS kann Edge beispielsweise Informationen über das TLS-Chiffre oder TLS-Protokoll, das in der TLS-Verbindung verwendet wird.

Beim bidirektionalen TLS kann Edge alle Informationen erfassen, die auch für das Einweg-TLS, Außerdem werden Informationen zum Zertifikat des Kunden erfasst. Zum Beispiel kann Edge den SHA1-Fingerabdruck erfassen. und des Clientzertifikats im PEM-Format.

Daten für beides erfassen unidirektionale und bidirektionale TLS

In der folgenden Tabelle sind die Flussvariablen aufgeführt, die die erfassten TLS-Verbindungsinformationen enthalten von Edge und für den Zugriff über den API-Proxy verfügbar. Diese Informationen werden sowohl für Einbahnstraßen und Zwei-Wege-TLS, indem Sie <ConnectionProperties> im Definition des virtuellen Hosts:

Ablaufvariable Beschreibung
tls.cipher Die Chiffren, die von der TLS-Verbindung verwendet werden.
tls.protocol Das Protokoll, das von der TLS-Verbindung verwendet wird.
tls.server.name Der angeforderte SNI-Servername.
tls.session.id

Die Sitzungs-ID.

Diese Flussvariable ist verfügbar, wenn Sie entweder <ConnectionProperties> oder <ClientProperties> oder auf "true" setzen.

Zusätzliche TLS-Informationen bei bidirektionaler TLS

In der folgenden Tabelle sind die Flussvariablen aufgeführt, die Clientzertifikatdetails enthalten, die von Edge erfasst wurden in Zwei-Wege-TLS. Diese Informationen werden für bidirektionales TLS erfasst, indem die Einstellung <ClientProperties> in der Definition des virtuellen Hosts auf „true“:

Ablaufvariable Beschreibung
tls.client.s.dn Der Betreff "Distinguished Name (DN)" des Clientzertifikats.
tls.client.i.dn Der Aussteller-DN (Distinguished Name, DN) des Clientzertifikats.
tls.client.raw.cert Das Clientzertifikat im PEM-Format.
tls.client.cert.serial Die Seriennummer des Clientzertifikats.
tls.client.cert.fingerprint SHA1-Fingerabdruck des Clientzertifikats.
tls.session.id

Die Sitzungs-ID.

Diese Flussvariable ist verfügbar, wenn Sie entweder <ConnectionProperties> oder <ClientProperties> auf „true“.

Virtuellen Host zum Erfassen von TLS-Informationen konfigurieren

Legen Sie die folgenden Attribute fest, um den virtuellen Host zum Erfassen von TLS-Informationen zu konfigurieren unter <PropagateTLSInformation> auf true.

  • <ConnectionProperties>: Erfassung von TLS-Verbindungsinformationen aktivieren für unidirektionale und bidirektionale TLS. Der Standardwert ist false.
  • <ClientProperties>: Ermöglicht die Erfassung zusätzlicher Informationen für Zwei-Wege-TLS. Der Standardwert ist false.

Die folgende Definition für virtuelle Hosts verwendet beispielsweise Zwei-Wege-TLS und ermöglicht die Erfassung von beiden Arten von TLS-Informationen:

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

Wenn Sie einen JSON-Text übergeben, legen Sie die Attribute so fest:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

Größenbeschränkungen für Kopfzeilen festlegen

Wenn Sie die Erfassung von TLS-Informationen auf einem virtuellen Host aktivieren, übergibt Edge diese Informationen mithilfe von HTTP-Headern. Sie müssen daher sicherstellen, dass die Größenbeschränkungen für Header entsprechend festgelegt sind. je nachdem, ob Sie Edge für die Cloud oder Edge für die Private Cloud verwenden:

  • Edge for the Cloud: Apigee legt die Header-Größen entsprechend fest.
  • Edge for the Private Cloud: Feature nicht verfügbar.

Auf Ablaufvariablen in einem API-Proxy zugreifen

Über Ihren API-Proxy können Sie auf die TLS-Ablaufvariablen zugreifen und sie prüfen. Sie können beispielsweise die Methode AssignMessage verwenden, und greifen Sie mit der JavaScript-Richtlinie in JavaScript darauf zu.

Sie können auch in einem <Condition>-Element eines Proxy- oder Zielablaufs auf die Flussvariablen verweisen. oder in einem <Step> oder <RouteRule>. Beispielsweise könnten Sie eine Anfrage an verschiedene Ziele basierend auf der SN des Clients.

Weitere Informationen: