Sie lesen gerade die Apigee Edge -Dokumentation.
Zur
Apigee X -Dokumentation. info
Ein virtueller Host in Edge definiert die Domains und Ports, über die ein API-Proxy verfügbar gemacht wird, und danach die URL, die Anwendungen zum Aufrufen eines API-Proxys verwenden.
Ein virtueller Host definiert auch, ob auf den API-Proxy über das HTTP-Protokoll oder über das verschlüsselte HTTPS-Protokoll mit TLS zugegriffen wird. Wenn Sie einen virtuellen Host für die Verwendung von HTTPS und TLS konfigurieren, erstellen Sie einen virtuellen Host in Edge und konfigurieren ihn für die Verwendung eines Schlüsselspeichers und Truststores.
Weitere Informationen :
- Informationen zu TLS/SSL
- TLS mit Edge verwenden
- Informationen zu virtuellen Hosts
- Virtuelle Hosts für die Private Cloud konfigurieren
- Referenz zu Eigenschaften virtueller Hosts
- Schlüsselspeicher und Truststores
Voraussetzungen für die Erstellung eines virtuellen Hosts
Bevor Sie einen virtuellen Host erstellen, sollten Sie die folgenden Informationen haben:
- Der öffentlich zugängliche Domainname des virtuellen Hosts. Sie sollten beispielsweise wissen, ob
der öffentlich zugängliche Name
api.myCompany.com,myapi.myCompany.comusw. lautet. Diese Informationen werden beim Erstellen des virtuellen Hosts und auch beim Erstellen des DNS-Eintrags für den virtuellen Host verwendet. -
Für die unidirektionale TLS müssen Sie einen Schlüsselspeicher erstellen, der Folgendes enthält:
- 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 2048 Bit. Eine Passphrase ist optional.
- Für die bidirektionale TLS benötigen Sie einen Schlüsselspeicher und einen Truststore, in dem das Zertifikat des Clients und optional die Zertifikatskette der Zertifizierungsstelle gespeichert werden. Sie benötigen den Truststore auch dann, wenn das Zertifikat von einer Zertifizierungsstelle signiert ist.
Weitere Informationen zum Erstellen von Schlüsselspeichern und Truststores finden Sie unter Schlüsselspeicher und Truststores.
Konfiguration virtueller Hosts für TLS
Erstellen Sie ein XML-Objekt, das den virtuellen Host definiert, um einen virtuellen Host zu erstellen.
Das folgende XML-Objekt verwendet das <SSLInfo> Element, um einen virtuellen
Host für eine unidirektionale TLS-Konfiguration über HTTPS zu definieren:
<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 ist das <Enabled> Element auf „true“ gesetzt, um
die unidirektionale TLS zu aktivieren. Die <KeyStore> und <KeyAlias> Elemente geben den Schlüsselspeicher
und den Schlüssel an, die von der TLS-Verbindung verwendet werden.
Wenn Sie die bidirektionale TLS aktivieren möchten, setzen Sie das <ClientAuthEnabled> Element auf
true, und geben Sie einen Truststore
mit dem <TrustStore>
Element an. Der Truststore enthält das Zertifikat des Clients und optional die Zertifikatskette der Zertifizierungsstelle.
Festlegen, wie der Name des Schlüsselspeichers und des Truststores im virtuellen Host angegeben werden soll
Im Beispiel für einen virtuellen Host oben haben Sie den Schlüsselspeicher mit einem Verweis angegeben. Ein Verweis ist eine Variable, die den Namen des Schlüsselspeichers enthält, statt den Namen des Schlüsselspeichers direkt anzugeben.
Der Vorteil eines Verweises besteht darin, dass Sie den Wert des Verweises ändern können, um den vom virtuellen Host verwendeten Schlüsselspeicher zu ändern, beispielsweise wenn das Zertifikat im aktuellen Schlüsselspeicher bald abläuft. Sie müssen den Edge-Router nicht neu starten , um den Wert des Verweises zu ändern.
Alternativ können Sie im virtuellen Host einen Literal-Namen für den Schlüsselspeicher verwenden. Wenn Sie den virtuellen Host jedoch ändern, um den Namen des Schlüsselspeichers zu ändern, müssen Sie die Edge-Router neu starten.
Einschränkungen bei der Verwendung von Verweisen auf Schlüsselspeicher und Truststore
Bei der Verwendung von Verweisen auf Schlüsselspeicher und Truststores müssen Sie die folgende Einschränkung berücksichtigen:
- Sie können Schlüsselspeicher- und Truststore-Verweise nur auf virtuellen Hosts verwenden, wenn Sie SNI unterstützen und Sie die SSL für die Apigee-Router beenden.
- Wenn Sie einen Load-Balancer vor den Apigee-Routern haben und die TLS auf dem Load-Balancer beenden, können Sie keine Schlüsselspeicher- und Truststore-Verweise in virtuellen Hosts verwenden.
Vorhandenen virtuellen Host so ändern, dass er Verweise auf den Schlüsselspeicher und den Truststore verwendet
Apigee empfiehlt dringend, dass virtuelle Hosts Verweise auf Schlüsselspeicher und Truststores verwenden. Mit Verweisen können Sie den vom virtuellen Host verwendeten Schlüsselspeicher und Truststore ändern, ohne die Edge-Router neu starten zu müssen.
Wenn Ihre virtuellen Hosts derzeit so konfiguriert sind, dass sie den Literal-Namen des Schlüsselspeichers oder Truststores verwenden, können Sie sie so umstellen, dass sie Verweise verwenden. Aktualisieren Sie dazu den virtuellen Host, um Verweise zu verwenden, und starten Sie dann die Edge-Router neu.
TLS-Chiffren und -Protokolle für Edge 4.15.07 und früher festlegen
Wenn Sie Edge Version 4.15.07 und früher verwenden, legen Sie das TLS-Protokoll und die Chiffren
fest, die vom virtuellen Host verwendet werden, indem Sie die untergeordneten Tags <Ciphers> und <Protocols> des
<SSLInfo> Tags verwenden. 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 Tag <Cipher> verwendet
den Java- und JSSE-Namen der Chiffre. Informationen zu Java 8 finden Sie unter
http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.
TLS-Chiffren und -Protokolle für Edge 4.16.01 bis 4.16.09 angeben
In Edge 4.16.01 bis 4.16.09 legen Sie die Standardchiffren und -protokolle für virtuelle Hosts global auf dem Router fest. Diese Standardwerte 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
ist:
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 an.
Der Standardwert des Tokens conf_load_balancing_load.balancing.driver.server.ssl.ciphers
ist:
conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES
Diese Einstellung gibt Folgendes an:
- Schlüssellänge von mindestens 128 Bit erforderlich (
HIGH). - Chiffren ohne Authentifizierung ausschließen (
!aNULL) - Chiffrensammlungen mit MD5 ausschließen (
!MD5) - Chiffrensammlungen mit DH (einschließlich anonymem DH, ephemerem DH und festem DH) UND
Triple-DES (
!DH+3DES) ausschließen - Chiffrensammlungen mit RSA-Schlüsselaustausch UND Triple-DES ausschließen (
!RSA+3DES)
Informationen zur Syntax und zu den für dieses Token zulässigen Werten finden Sie unter OpenSSL-Chiffren. Beachten Sie, dass dieses Token die OpenSSL-Chiffrennamen wie AES128-SHA256 und nicht die Java/JSSE-Chiffrennamen wie TLS_RSA_WITH_AES_128_CBC_SHA256 verwendet.
So legen Sie das Token für den Router fest:
- Bearbeiten Sie die
/opt/apigee/customer/application/router.propertiesDatei. Wenn die Datei nicht vorhanden ist, erstellen Sie sie. - Legen Sie das
conf_load_balancing_load.balancing.driver.server.ssl.ciphersToken fest. Wenn Sie beispielsweise nur TLSv1.2 angeben und Chiffrensammlungen mit vorinstallierten Schlüsseln ausschließen möchten, fügen Sie!PSKhinzu: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
- Achten Sie darauf, dass die
router.propertiesDatei dem Nutzer „apigee“ gehört:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Starten Sie den Edge-Router neu:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 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
TLS-Parameter für virtuelle Hosts für Edge Version 4.17.01 und höher festlegen
Wenn Sie Edge Version 4.17.01 und höher verwenden, können Sie einige TLS-Eigenschaften für einen
einzelnen virtuellen Host festlegen, z. B. das TLS-Protokoll und die Chiffre, indem Sie das <Properties> untergeordnete Tag des
<VirtualHost>
Tags verwenden. Diese Tags werden unter Referenz zu Eigenschaften virtueller Hosts 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 OpenSSL-Chiffrennamen wie AES128-SHA256 und nicht
die Java/JSSE-Chiffrennamen wie TLS_RSA_WITH_AES_128_CBC_SHA256 verwendet.
Virtuellen Host erstellen, der HTTPS verwendet
In diesem Beispiel wird der Schlüsselspeicher für den virtuellen Host mit einem Verweis angegeben. Mit einem Verweis können Sie den Schlüsselspeicher ändern, ohne die Router neu starten zu müssen.
Gehen Sie so vor, um den virtuellen Host zu erstellen:
- Erstellen und konfigurieren Sie einen Schlüsselspeicher mit dem Namen myTestKeystore gemäß der Beschreibung unter Schlüsselspeicher und Truststores. Achten Sie darauf, dass der Schlüsselspeicher den Aliasnamen myKeyAlias für das Zertifikat und den privaten Schlüssel verwendet.
-
Verwenden Sie den folgenden POST-API-Aufruf, um den Verweis named keystoreref auf den oben erstellten Schlüsselspeicher 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:passwordDer Verweis gibt den Namen des Schlüsselspeichers und den Verweistyp als
KeyStorean.Verwenden Sie den folgenden GET-API-Aufruf, um den Verweis aufzurufen:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password Erstellen Sie den virtuellen Host mit der Create a Virtual Host API. Dabei ist
<ms-IP>die IP-Adresse oder der Domainname des Management Server-Knotens.Achten Sie darauf, dass Sie den richtigen Schlüsselspeicherverweis und den richtigen Schlüsselalias angeben:
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- Erstellen Sie einen DNS-Eintrag für den virtuellen Host, der mit dem Hostalias übereinstimmt.
Wenn Sie vorhandene API-Proxys haben, fügen Sie den virtuellen Host dem
<HTTPConnection>Element in the ProxyEndpoint hinzu. Der virtuelle Host wird automatisch allen neuen API-Proxys hinzugefügt.Weitere Informationen finden Sie unter API-Proxy nach dem Erstellen eines virtuellen Hosts aktualisieren unter Informationen zu virtuellen Hosts.
Nachdem Sie einen API-Proxy so aktualisiert haben, dass er den virtuellen Host verwendet, und den DNS-Eintrag für den Host alias erstellt haben, 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
Verweise auf einen Schlüsselspeicher oder Truststore erstellen und ändern
Sie können den virtuellen Host optional so konfigurieren, dass er stattdessen einen Verweis auf den Schlüsselspeicher oder Truststore verwendet. Der Vorteil eines Verweises besteht darin, dass Sie den Verweis aktualisieren können, um auf einen anderen Schlüsselspeicher oder Truststore zu verweisen, um das TLS-Zertifikat zu aktualisieren, ohne einen Router neu starten zu müssen.
Im Folgenden sehen Sie ein Beispiel für 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 den Verweis 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
Der Verweis gibt den Namen des Schlüsselspeichers und seinen Typ an.
Verwenden Sie den folgenden GET-API-Aufruf, um den Verweis 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