TLS-Zugriff auf eine API für die private Cloud konfigurieren

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

Ein virtueller Host in Edge definiert die Domains und Ports, auf denen ein API-Proxy verfügbar gemacht wird, und durch Erweiterung, also die URL, über die Apps auf einen API-Proxy zugreifen.

Ein virtueller Host definiert auch, ob der Zugriff auf den API-Proxy über das HTTP-Protokoll oder das verschlüsselte HTTPS-Protokoll, das TLS verwendet. Wenn Sie einen virtuellen Host für die Verwendung von HTTPS und TLS erstellen, erstellen Sie einen virtuellen Host in Edge und konfigurieren den virtuellen Host für die Verwendung eines Schlüsselspeichers. und Truststore.

Weitere Informationen:

Voraussetzungen zum Erstellen eines virtuellen Hosts

Bevor Sie einen virtuellen Host erstellen, sollten Sie folgende Informationen haben:

  • Der öffentliche Domainname des virtuellen Hosts. Sie sollten beispielsweise wissen, der öffentlich sichtbare Name api.myCompany.com, myapi.myCompany.com usw. lautet. Diese Informationen wird verwendet, wenn Sie den virtuellen Host und auch den DNS-Eintrag für den virtueller Host.
  • Bei Einweg-TLS müssen Sie einen Schlüsselspeicher erstellen, in dem der Schlüsselspeicher Folgendes: <ph type="x-smartling-placeholder">
      </ph>
    • TLS-Zertifikat: entweder ein von einer Zertifizierungsstelle signiertes Zertifikat oder Eine Zertifikatskette, bei der das letzte Zertifikat von einer Zertifizierungsstelle signiert ist.
    • Privater Schlüssel: Edge unterstützt Schlüsselgrößen von bis zu 2.048 Bit. Eine Passphrase ist optional.
  • Für Zwei-Wege-TLS benötigen Sie einen Schlüsselspeicher und einen Truststore, das Zertifikat des Clients und optional die CA-Kette des Zertifikats. Sie benötigen den Truststore auch dann, das Zertifikat von einer Zertifizierungsstelle signiert ist.

Weitere Informationen finden Sie unter Schlüsselspeicher und Truststores.

Konfiguration virtueller Hosts für TLS

Erstellen Sie zum Erstellen eines virtuellen Hosts ein XML-Objekt, das den virtuellen Host definiert. Das folgende XML-Objekt verwendet das <SSLInfo>-Element, um eine virtuelle Host für eine One-Way-TLS-Konfiguration über HTTPS:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

In diesem Beispiel wird das Element <Enabled> auf „true“ gesetzt, One-Way-TLS aktivieren und die Elemente <KeyStore> und <KeyAlias> geben den Schlüsselspeicher an und Schlüssel, die von der TLS-Verbindung verwendet werden.

Um Zwei-Wege-TLS zu aktivieren, setzen Sie das Element <ClientAuthEnabled> auf true und geben Sie einen Truststore an mit <TrustStore> -Elements. Der Truststore enthält das Zertifikat des Clients und optional die Zertifizierungsstelle des Zertifikats. Kette hinzufügen.

Schlüsselspeicher und Truststore-Name im virtuellen Host angeben

Im obigen Beispiel für einen virtuellen Host haben Sie den Schlüsselspeicher mithilfe einer Referenz angegeben. A Verweis ist eine Variable, die den Namen des Schlüsselspeichers enthält, anstatt den Wert für Schlüsselspeichernamen direkt an.

Der Vorteil einer Referenz besteht darin, dass Sie deren Wert ändern können, um aus dem Schlüsselspeicher, der vom virtuellen Host verwendet wird, in der Regel, weil das Zertifikat im aktuellen Schlüsselspeicher in naher Zukunft auslaufen. Wenn du den Wert der Referenz änderst, musst du nicht neu starten den Edge Router.

Alternativ können Sie einen literalen Schlüsselspeichernamen im virtuellen Host verwenden. Sollten Sie jedoch jemals den virtuellen Host ändern, um den Schlüsselspeichernamen zu ändern, müssen Sie die Edge Router neu starten.

Einschränkungen bei der Verwendung von Verweisen auf Schlüsselspeicher und Truststores

Sie müssen die folgende Einschränkung berücksichtigen, wenn Sie Verweise auf Schlüsselspeicher und Trust Stores:

  • Sie können Schlüsselspeicher- und Truststore-Referenzen in virtuellen Hosts nur verwenden, wenn Sie SNI und beenden Sie SSL auf den Apigee-Routern.
  • Wenn sich vor den Apigee-Routern ein Load-Balancer befindet und Sie TLS auf dem können Sie Keystore- und Truststore-Referenzen nicht in virtuellen Hosts.

Vorhandenen virtuellen Host ändern, um Verweise auf den Schlüsselspeicher und den Truststore zu verwenden

Apigee empfiehlt dringend, für virtuelle Hosts Verweise auf Schlüsselspeicher und Truststores zu verwenden. Mit Verweisen können Sie den vom virtuellen Host verwendeten Schlüsselspeicher und Truststore ändern, ohne die Edge Router neu starten müssen.

Wenn Ihre virtuellen Hosts derzeit so konfiguriert sind, dass sie den Literalnamen des Schlüsselspeichers oder können Sie sie in Referenzen umwandeln. Aktualisieren Sie dazu den virtuellen Host, der verwendet werden soll, und starten Sie die Edge Router neu.

Festlegen der TLS-Chiffren und -Protokolle für Edge 4.15.07 und frühere Versionen

Wenn Sie Edge-Version 4.15.07 und niedriger verwenden, legen Sie das TLS-Protokoll und die TLS-Chiffren fest wird vom virtuellen Host mit den untergeordneten Tags <Ciphers> und <Protocols> der <SSLInfo>. Diese Tags werden in der folgenden Tabelle beschrieben.

Beispiel:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>myTestKeystore</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>false</ClientAuthEnabled>
            <KeyStore>myTestKeystore</KeyStore>
            <KeyAlias>myKeyAlias</KeyAlias>
            <Ciphers>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher>
                <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher>
            </Ciphers>
            <Protocols>
                <Protocol>TLSv1.2</Protocol>
            </Protocols>
        </SSLInfo>
   </SSLInfo>

Das <Cipher>-Tag verwendet den Java- und JSSE-Namen der Chiffre. Für Java 8 lesen Sie beispielsweise http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.

Angabe der TLS-Chiffren und -Protokolle für Edge 4.16.01 bis 4.16.09

In Edge 4.16.01 bis 4.16.09 legen Sie die Standardchiffren und -protokolle für virtuelle Hosts fest global auf dem Router. Diese Standardeinstellungen gelten dann für alle virtuellen Hosts.

Verwenden Sie Tokens, um die Standardprotokolle und -chiffren anzugeben:

  • Verwenden Sie das Token conf_load_balancing_load.balancing.driver.server.ssl.protocols, um die Standardprotokolle anzugeben.
  • Verwenden Sie das Token conf_load_balancing_load.balancing.driver.server.ssl.ciphers, um die Standardchiffren für den Router anzugeben.

Der Standardwert des conf_load_balancing_load.balancing.driver.server.ssl.protocols-Tokens lautet:

conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2

Diese Einstellung gibt an, dass der Router die TLS-Versionen 1.0, 1.1 und 1.2 unterstützt. Geben Sie eine durch Leerzeichen getrennte Liste von Werten für das Token.

Der Standardwert des conf_load_balancing_load.balancing.driver.server.ssl.ciphers-Tokens lautet:

conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES

Mit dieser Einstellung legen Sie Folgendes fest:

  • Schlüssellänge von mindestens 128 Bit (HIGH) erforderlich.
  • Chiffren ohne Authentifizierung ausschließen (!aNULL)
  • Cipher Suites mit MD5 (!MD5) ausschließen
  • Cipher Suites mit DH ausschließen (einschließlich anonymer und ephemerer DH und fester DH) UND Dreifach-DES (!DH+3DES)
  • Cipher Suites mithilfe des RSA-Schlüsselaustauschs UND Dreifach-DES (!RSA+3DES) ausschließen

Informationen zur Syntax und zu den Werten, die für dieses Token zulässig sind, finden Sie unter OpenSSL-Chiffren. Beachten Sie, dass dieses Token die Verschlüsselungsnamen von OpenSSL wie AES128-SHA256 und nicht den Java/JSSE-Chiffrennamen wie TLS_RSA_WITH_AES_128_CBC_SHA256.

So legen Sie das Token für den Router fest:

  1. /opt/apigee/customer/application/router.properties bearbeiten -Datei. Sollte die Datei nicht vorhanden sein, erstellen Sie sie.
  2. conf_load_balancing_load.balancing.driver.server.ssl.ciphers festlegen Token. Wenn Sie beispielsweise nur TLSv1.2 angeben und Cipher Suites mit vorinstallierten Schlüsseln ausschließen möchten, Hinzufügen!PSK:
    conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
  3. Der Eigentümer der Datei router.properties muss sein Apigee:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. Starten Sie den Edge Router neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  5. Prüfen Sie den Wert des Tokens:
    /opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers

Einstellung TLS-Parameter für virtuelle Hosts für Edge-Version 4.17.01 und höher

Wenn Sie Edge-Version 4.17.01 und höher verwenden, können Sie einige TLS-Eigenschaften für eine einzelner virtueller Hosts, z. B. TLS-Protokoll und TLS-Verschlüsselung, mithilfe des untergeordneten Tags <Properties> der <VirtualHost> Tag. Diese Tags werden unter Referenz zu virtuellen Host-Attributen beschrieben.

Beispiel:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <OCSPStapling>off</OCSPStapling>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">50</Property>
        <Property name="keepalive_timeout">300</Property>
        <Property name="proxy_request_buffering">off</Property>
        <Property name="proxy_buffering">off</Property>
        <Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property>
        <Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property>
    </Properties>
</VirtualHost>

Informationen zur Syntax und zu den für das ssl_ciphers-Token zulässigen Werten finden Sie unter OpenSSL-Chiffren. Beachten Sie, dass dieses Token die Verschlüsselungsnamen von OpenSSL wie AES128-SHA256 verwendet und nicht die Java/JSSE-Chiffrennamen, z. B. TLS_RSA_WITH_AES_128_CBC_SHA256.

Virtuellen Host erstellen, der HTTPS verwendet

In diesem Beispiel wird der Schlüsselspeicher für den virtuellen Host mithilfe einer Referenz angegeben. Mit einem können Sie den Schlüsselspeicher ändern, ohne den Router neu starten zu müssen.

Gehen Sie wie folgt vor, um den virtuellen Host zu erstellen:

  1. Erstellen und konfigurieren Sie einen Schlüsselspeicher namens myTestKeystore mithilfe der Methode hier beschrieben: Schlüsselspeicher und Truststores. Achten Sie darauf, dass der Schlüsselspeicher einen Aliasnamen verwendet myKeyAlias für das Zertifikat und den privaten Schlüssel angeben.
  2. Verwende den folgenden POST API-Aufruf, um die Referenz zu erstellen. namens keystoreref in den Schlüsselspeicher, den Sie oben erstellt haben:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="keystoreref">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>'
      -u email:password
    

    Die Referenz gibt den Namen des Schlüsselspeichers und den Referenztyp als KeyStore an.

    Verwenden Sie den folgenden GET API-Aufruf, um die Referenz aufzurufen:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
    
  3. Erstellen Sie den virtuellen Host mithilfe der Funktion Create a Virtual Host API, wobei <ms-IP> die IP-Adresse ist oder Domainname des Verwaltungsserverknotens.

    Achten Sie darauf, den richtigen Schlüsselspeicherverweis und den richtigen Schlüsselalias anzugeben:

    curl -X POST -H "Content-Type:application/xml" \
      http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \
      -d '<VirtualHost  name="newTLSTrustStore2">
        <HostAliases>
          <HostAlias>apiTLS.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
        <OCSPStapling>off</OCSPStapling>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://keystoreref</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u email:password
  4. Erstellen Sie einen DNS-Eintrag für den virtuellen Host, der mit dem Hostalias übereinstimmt.
  5. Wenn Sie bereits API-Proxys haben, fügen Sie den virtuellen Host zum <HTTPConnection>-Element in der ProxyEndpoint. Der virtuelle Host wird allen neuen API-Proxys automatisch hinzugefügt.

    Siehe API-Proxy nach dem Erstellen eines virtuellen Hosts aktualisieren in Informationen zu virtuellen Hosts

Nach der Aktualisierung eines API-Proxys zur Verwendung des virtuellen Hosts und dem Erstellen des DNS-Eintrags für den Host -Alias, können Sie wie unten gezeigt auf den API-Proxy zugreifen:

https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}

Beispiel:

https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282

Referenzen erstellen und ändern in einen Schlüsselspeicher oder Truststore,

Optional können Sie den virtuellen Host so konfigurieren, dass er eine Referenz auf den Schlüsselspeicher verwendet. Truststore. Der Vorteil der Verwendung einer Referenz besteht darin, dass Sie die Referenz auf auf einen anderen Schlüsselspeicher oder Truststore verweisen, um das TLS-Zertifikat zu aktualisieren, ohne einen Router.

Im Folgenden sehen Sie beispielsweise einen virtuellen Host, der einen Verweis auf den Schlüsselspeicher verwendet:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>apiTLS.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9006</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://keystoreref</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

Verwenden Sie den folgenden POST API-Aufruf, um die Referenz mit dem Namen keystoreref zu erstellen:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
  -d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password

Die Referenz gibt den Namen des Schlüsselspeichers und seinen Typ an.

Verwenden Sie den folgenden GET API-Aufruf, um die Referenz aufzurufen:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

Verwenden Sie den folgenden PUT-Aufruf, um später die Referenz so zu ändern, dass sie auf einen anderen Schlüsselspeicher verweist, damit der Alias denselben Namen hat:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
  -d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
  </ResourceReference>'
  -u email:password