Sie lesen gerade die Dokumentation zu Apigee Edge.
Rufen Sie die
Dokumentation zu Apigee X auf. info
Sie können das Portal für die Verwendung von TLS konfigurieren. Die TLS-Konfiguration für das Portal hängt davon ab, wie Sie das Portal bereitgestellt haben:
- Cloud: Konfigurieren Sie TLS über Pantheon oder Acquia, die cloudbasierten Hostingdienste für das Portal.
- Apigee Edge for Private Cloud: Konfigurieren Sie TLS lokal auf dem Server auf dem das Portal gehostet wird.
TLS und das Portal
Die folgende Abbildung zeigt die beiden Stellen, an denen das Portal TLS verwendet:

- Für die Kommunikation zwischen dem Portal und der Edge Management API.
Das Portal funktioniert nicht als eigenständiges System. Stattdessen werden viele der vom Portal verwendeten Informationen in Edge gespeichert, wobei Edge entweder in der Cloud oder lokal als Private Cloud-Installation bereitgestellt werden kann. Bei Bedarf sendet das Portal eine HTTP- oder HTTPS Anfrage an die Edge Management API, um Informationen abzurufen oder zu senden.
Wenn Sie Ihr Portal erstellen, müssen Sie als einen der ersten Schritte die URL der Edge Management API angeben. Je nach Konfiguration der Edge Management API kann diese URL TLS verwenden. Weitere Informationen finden Sie unter Creating a developer portal. - Für die Kommunikation zwischen Entwicklern und dem Portal.
Wenn Sie das Developer Services-Portal verwenden, um Ihre APIs bereitzustellen, melden sich Ihre Entwickler im Portal an, um Anwendungen zu registrieren und API-Schlüssel zu erhalten. Die Anmeldedaten und der API-Schlüssel sind vertrauliche Informationen, die Sie über HTTPS senden sollten, um ihre Sicherheit zu gewährleisten. Diese Art von vertraulichen Informationen sollte über HTTPS gesendet werden.
Wie Sie TLS für dieses Szenario konfigurieren, hängt davon ab, wie Sie das Portal bereitgestellt haben: Cloud oder Apigee Edge for Private Cloud. In den folgenden Abschnitten werden beide Szenarien beschrieben.
TLS zwischen dem Portal und der Edge Management API konfigurieren
Die Konfiguration der Edge Management API bestimmt, ob die Kommunikation TLS verwenden kann. Wenn die Edge Management API für die Verwendung von TLS konfiguriert ist, kann das Portal HTTPS verwenden. Andernfalls kommuniziert das Portal über HTTP mit Edge. Als Portalentwickler müssen Sie daher nur wissen, wie Edge konfiguriert ist, um die Verbindung zwischen dem Portal und Edge einzurichten.
Die Schritte zum Konfigurieren der Verbindung zur Edge Management API finden Sie unter Entwicklerportal erstellen.
Cloudbasierte Version von Edge
Wenn Ihr Portal eine Verbindung zur cloudbasierten Version von Edge herstellt, ist die URL für die Edge Management API von Apigee vorkonfiguriert, um TLS zu verwenden. Beim Konfigurieren des Portals greifen Sie über die URL https://api.enterprise.apigee.com/v1 auf die Edge Management API zu.
Private Cloud-Installation von Edge
Bei einer Private Cloud-Installation von Edge hat die URL der Edge Management API folgendes
Format:
http://EdgePrivateCloudIp:8080/v1
oder:
https://EdgePrivateCloudIp:TLSport/v1
Dabei ist EdgePrivateCloudIp die IP-Adresse des Edge Management Servers und TLSport der TLS-Port für die Edge Management API. Die Portnummer kann je nach Edge-Konfiguration beispielsweise 8443 oder sogar 8080 sein.
TLS zwischen Entwicklern und dem Portal konfigurieren
Wie Sie TLS zwischen Entwicklern und dem Portal konfigurieren, hängt davon ab, wie Sie das Portal bereitgestellt haben: Cloud oder Apigee Edge for Private Cloud.
Cloudbasierte Portale
Pantheon
Pantheon bietet kostenloses automatisiertes HTTPS für alle Websites auf seiner Plattform über das Pantheon Global CDN und Let's Encrypt. Weitere Informationen finden Sie unter HTTPS im Global CDN von Pantheon.
Acquia
Informationen zum Aktivieren von TLS/SSL mit Acquia finden Sie unter SSL aktivieren.Edge for Private Cloud-Portale
Für alle von Apigee empfohlenen Private Cloud-Installationen des Portals muss sich das Portal hinter einem Load-Balancer befinden, wie unten dargestellt:

Bei lokalen Installationen haben Sie daher zwei Möglichkeiten, TLS zu konfigurieren:
- TLS auf dem Load-Balancer konfigurieren: Konfigurieren Sie TLS auf dem Load-Balancer selbst und nicht auf dem Portal. Die Schritte zum Konfigurieren von TLS hängen daher vom Load-Balancer ab. Weitere Informationen finden Sie in der Dokumentation zu Ihrem Load-Balancer.
- TLS auf dem Portal selbst konfigurieren: Bei Bedarf können Sie TLS auf dem Webserver konfigurieren, auf dem das Portal gehostet wird. Weitere Informationen finden Sie unter Portal für die Verwendung von HTTPS konfigurieren.
Sie müssen ein eigenes TLS-Zertifikat erwerben, bevor Sie das Portal in einer Produktions Umgebung bereitstellen können.
Zusätzliche TLS-Einstellungen konfigurieren
Sie können die Datei sites/default/settings.local.php (Cloud) oder sites/default/settings.php (Private Cloud) bearbeiten, um Konfigurationsänderungen an TLS für das Portal vorzunehmen.
Fügen Sie beim Bearbeiten der Datei Instanzen der Funktion ini_set() hinzu, um eine Property festzulegen. Weitere Informationen zu dieser Funktion finden Sie unter http://php.net/manual/en/function.ini-set.php.
Sie können die folgenden Properties in der Datei sites/default/settings.local.php (Cloud) oder sites/default/settings.php (Private Cloud) festlegen:
- cookie_httponly:
(Empfohlen) Gibt an, dass auf das Cookie nur über das HTTP-Protokoll zugegriffen werden kann. Legen Sie diese
Property so fest:
ini_set('session.cookie_httponly', true); - session.cookie_secure
: (Optional) Gibt an, dass Cookies nur über sichere Verbindungen gesendet werden können. Das bedeutet jedoch, dass alle Inhalte über HTTPS bereitgestellt werden müssen. Wenn diese Einstellung aktiviert ist, funktioniert die Website nicht
über HTTP. Legen Sie diese Property so fest:
ini_set('session.cookie_secure', true); - gc_maxlifetime
und cookie_lifetime:
(Optional) gc_lifeteime
gibt die Anzahl der Sekunden an, nach denen Daten möglicherweise bereinigt werden können, und
cookie_lifetime gibt die
Lebensdauer des Cookies in Sekunden an. Legen Sie diese Properties so fest:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Weitere Informationen zum Einrichten von TLS zwischen dem Entwicklerportal und Clients finden Sie unter SSL für sichere HTTPS-Kommunikation aktivieren auf der Pantheon-Dokumentationswebsite.
TLS mit Load-Balancern konfigurieren
Zur Verbesserung der Leistung werden Load-Balancer manchmal so konfiguriert, dass sie die TLS-Terminierung durchführen. Bei der TLS-Terminierung entschlüsseln Load-Balancer Nachrichten, die über https:// gesendet werden, und leiten sie über http:// an Back-End Server weiter. Dadurch wird den Backend-Servern der Aufwand für die Entschlüsselung von https://-Nachrichten erspart.
Wenn Load-Balancer unverschlüsselte HTTP-Nachrichten an Server im selben Rechenzentrum weiterleiten, stellt die Sicherheit kein Problem dar. Wenn Load-Balancer Nachrichten jedoch über http:// an Server außerhalb des Daten zentrums weiterleiten, z. B. an Ihr Apigee-Entwicklerportal, sind die Nachrichten unverschlüsselt, was eine Sicherheitslücke darstellt.
Wenn sich Ihr Entwicklerportal hinter Load-Balancern befindet, die TLS-Terminierung verwenden, und Sie möchten, dass der gesamte Traffic über https:// bereitgestellt wird, müssen die Website-Seiten nur https:// Links enthalten . Außerdem müssen Sie den folgenden Code in die Datei sites/default/settings.local.php (Cloud) oder sites/default/settings.php (Private Cloud) Ihres Entwicklerportals einfügen. Da der Load-Balancer den Inhalt der HTML-Seiten nicht automatisch umwandelt, sorgt der Code dafür, dass alle an den Client übergebenen Links mit https:// beginnen.
Fügen Sie die folgenden Zeilen in die Datei sites/default/settings.local.php (Cloud) oder sites/default/settings.php (Private Cloud) ein, um TLS mit Load-Balancern zu konfigurieren:
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Set HTTPS URL of portal $base_url = 'https://developers.myCo.com'; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO' ]) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO' ]) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO' ]) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); // You could optionally substitute a canonical server name for $_SERVER['HTTP_HOST'] here. header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
Weitere Informationen finden Sie unter:
- https://drupal.org/node/425990
- https://drupal.org/node/313145
- http://drupal.stackexchange.com/questions/102091/drupal-behind-a-ssl-offloading-reverse-proxy-is-this-config-correct
Portal-Traffic an HTTPS weiterleiten
Sie können den gesamten Portal-Traffic an HTTPS weiterleiten, indem Sie die Datei sites/default/settings.local.php (Cloud) oder sites/default/settings.php (Private Cloud) aktualisieren. Die erforderlichen Aktualisierungen hängen davon ab, ob Sie an HTTPS auf demselben Hostnamen oder auf mehreren Hostnamen weiterleiten.
An HTTPS auf demselben Hostnamen weiterleiten
Fügen Sie den folgenden Code in die Datei sites/default/settings.local.php (Cloud) oder sites/default/settings.php (Private Cloud) ein, um den gesamten Portal-Traffic auf demselben Hostnamen (z. B. *.devportal.apigee.io) an HTTPS weiterzuleiten.
In diesem Szenario schlägt die Anfrage fehl, wenn ein Entwickler Ihr Portal unter live-example.devportal.apigee.io aufruft, aber auf ein Zertifikat zugreifen muss, das für devportal.example.com hochgeladen wurde.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
An HTTPS auf mehreren Hostnamen weiterleiten
Fügen Sie den folgenden Code in die Datei sites/default/settings.local.php (Cloud) oder die Datei sites/default/settings.php (Private Cloud) ein, um den gesamten Portal-Traffic auf mehreren Hostnamen an HTTPS weiterzuleiten.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Assume we are not forcing a redirect until proven otherwise. $force_redirect = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { // We will force a redirect because HTTPS is required. $force_redirect = TRUE; } // This works on Pantheon only; the constant is undefined elsewhere. switch (PANTHEON_ENVIRONMENT) { case 'dev': $canonical_hostname = 'dev.devportal.example.com'; break; case 'test': $canonical_hostname = 'test.devportal.example.com'; break; case 'live': $canonical_hostname = 'devportal.example.com'; break; default: $canonical_hostname = strtolower($_SERVER['HTTP_HOST']); break; } if ($canonical_hostname != strtolower($_SERVER['HTTP_HOST'])) { // We will force a redirect because hostname is not canonical. $force_redirect = TRUE; } if ($force_redirect) { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $canonical_hostname . $_SERVER['REQUEST_URI']); exit; } }