Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Puedes configurar el portal para que use TLS. El procedimiento de configuración de TLS para el portal depende de cómo lo implementaste:
- Cloud: Configura TLS desde Pantheon o Acquia, los servicios de hosting basados en la nube para el portal.
- Apigee Edge para la nube privada: Configura TLS de forma local en el servidor que aloja el portal
TLS y el portal
En la siguiente imagen, se muestran los dos lugares en los que el portal usa TLS:
- Para la comunicación entre el portal y la API de Edge Management.
El portal no funciona como un sistema independiente. En cambio, gran parte de la información que usa el portal se almacena en realidad en Edge, donde Edge se puede implementar en la nube o de forma local como una instalación de nube privada. Cuando es necesario, el portal realiza una solicitud HTTP o HTTPS a la API de Edge Management para recuperar información o enviarla.
Cuando creas tu portal, uno de los primeros pasos que debes seguir es especificar la URL de la API de Edge Management. Según cómo esté configurada la API de Edge Management, esa URL puede usar TLS. Si deseas obtener más información, consulta Comienza a compilar tu portal para desarrolladores. - Para la comunicación entre los desarrolladores y el portal.
Cuando utilizas el portal de servicios para desarrolladores para implementar tus APIs, tus desarrolladores acceden al portal para registrar apps y recibir claves de API. Las credenciales de acceso y la clave de API son información de propiedad exclusiva que deseas enviar a través de HTTPS para garantizar su seguridad. Este tipo de información de propiedad se debe enviar a través de HTTPS.
La forma de configurar TLS en esta situación depende de cómo implementaste el portal: la nube o Apigee Edge para la nube privada. En las siguientes secciones, se describen ambas situaciones.
Configura TLS entre el portal y la API de Edge Management
La configuración de la API de Edge Management determina si la comunicación puede usar TLS o no. Si la API de Edge Management está configurada para usar TLS, el portal puede usar HTTPS. De lo contrario, el portal se comunica con Edge a través de HTTP. Por lo tanto, como desarrollador del portal, solo necesitas saber cómo está configurado Edge para establecer la conexión entre el portal y Edge.
Si quieres conocer el procedimiento que usas para configurar la conexión a la API de Edge Management, consulta Comienza a compilar tu portal para desarrolladores.
Versión de Edge basada en la nube
Si tu portal se conecta a la versión de Edge basada en la nube, Apigee configura previamente la URL de la API de Edge Management para que use TLS. Cuando configures el portal, podrás acceder a la API de Edge Management mediante la URL https://api.enterprise.apigee.com/v1.
Instalación de Edge de Edge en la nube privada
Para una instalación de nube privada de Edge, la URL de la API de Edge Management tiene el siguiente formato:
http://EdgePrivateCloudIp:8080/v1?
o:
https://EdgePrivateCloudIp:TLSport/v1
en el que EdgePrivateCloudIp es la dirección IP del servidor de Edge Management Server y TLSport es el puerto TLS de la API de Edge Management. Por ejemplo, el número de puerto podría ser 8443 o incluso 8080 según la configuración de Edge.
Configura TLS entre los desarrolladores y el portal
La forma en que configuras TLS entre los desarrolladores y el portal depende de cómo implementaste el portal: Cloud o Apigee Edge para la nube privada.
Portales basados en la nube
Panteón
Pantheon proporciona HTTPS automático gratuito para todos los sitios de su plataforma a través de Pantheon Global CDN y con Let's Encrypt. Consulta también HTTPS en la CDN global de Pantheon.
Acquia
Para habilitar TLS/SSL con Acquia, consulta Cómo habilitar SSL.Edge para portales de nube privada
Todas las instalaciones del portal de nube privada recomendadas por Apigee requieren que el portal esté detrás de un balanceador de cargas, como se muestra a continuación:
Por lo tanto, en las instalaciones locales, tienes dos opciones para configurar TLS:
- Configura TLS en el balanceador de cargas: Configura TLS en el balanceador de cargas y no en el portal. Por lo tanto, el procedimiento que se usa para configurar TLS depende del balanceador de cargas. Consulta la documentación sobre tu balanceador de cargas para obtener más información.
- Configura TLS en el portal: Si es necesario, puedes configurar TLS en el servidor web que aloja el portal. De forma predeterminada, Apigee instala el servidor web Apache. Si deseas obtener información sobre la configuración de TLS para Apache, consulta Cómo habilitar HTTP seguro (HTTPS)
Debes obtener tu propio certificado TLS para poder implementar el portal en un entorno de producción.
Establecer parámetros de configuración de TLS adicionales
Puedes editar el archivo sites/default/settings.local.php (cloud) o sites/default/settings.php (nube privada) para realizar cambios en la configuración de TLS del portal.
Cuando edites el archivo, agrega instancias de la función ini_set() para configurar una propiedad. Para obtener más información sobre esta función, consulta ini_set.
Puedes configurar las siguientes propiedades en el archivo sites/default/settings.local.php (cloud) o sites/default/settings.php (nube privada):
- cookie_httponly: (recomendado): Especifica que la cookie se pueda acceder solo a través del protocolo HTTP. Configura esta propiedad de la siguiente manera:
ini_set('session.cookie_httponly', true); - session.cookie_secure: (opcional) especifica que las cookies solo se pueden enviar a través de conexiones seguras. Sin embargo, esto significa que todo el contenido debe entregarse a través de HTTPS. Si se habilita esta configuración, el sitio no funcionará con HTTP. Configurar esta propiedad como:
ini_set('session.cookie_secure', true); - gc_maslifetime y cookie_lifetime: (Opcional) gc_lifeteime especifica la cantidad de segundos después de los cuales es posible que se limpien los datos, y cookie_lifetime especifica la vida útil de la cookie en segundos. Configura estas propiedades de la siguiente manera:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Si deseas obtener más información para configurar TLS entre el portal para desarrolladores y los clientes, consulta Cómo habilitar SSL para una comunicación HTTPS segura en el sitio de documentos de Pantheon.
Configura TLS con balanceadores de cargas
Para obtener un mejor rendimiento, a veces los balanceadores de cargas se configuran para realizar la finalización de TLS. Con la finalización de TLS, los balanceadores de cargas desencriptan los mensajes enviados a través de https:// y los reenvían a los servidores de backend a través de http://. Esto les ahorra a los servidores de backend la sobrecarga de desencriptar mensajes https:// por su cuenta.
Si los balanceadores de cargas reenvían mensajes HTTP sin encriptar a servidores ubicados en el mismo centro de datos, la seguridad no es un problema. Sin embargo, si los balanceadores de cargas reenvían mensajes a través de http:// a servidores fuera del centro de datos, como el portal para desarrolladores de Apigee, los mensajes no están encriptados, lo que abre una brecha de seguridad.
Si tu portal para desarrolladores se encuentra detrás de balanceadores de cargas que usan la finalización de TLS y quieres que todo el tráfico se entregue a través de https://, las páginas del sitio web deberán contener solo vínculos https:// y deberás agregar el siguiente código al archivo sites/default/settings.local.php (cloud) del portal de desarrolladores (cloud) o sites/default/settings.php (nube privada). Debido a que el balanceador de cargas no transforma automáticamente el contenido de las páginas HTML, el código garantiza que todos los vínculos que se pasan al cliente comiencen con https://.
Para configurar TLS con balanceadores de cargas, agrega las siguientes líneas al archivo sites/default/settings.local.php (cloud) o sites/default/settings.php (nube privada):
// 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; } }
Para obtener más información, consulta:
- Usa un balanceador de cargas o un proxy inverso
- Admite alternativas de encabezados HTTP X-Forwarded-*
- Drupal detrás de un proxy inverso de transferencia SSL: ¿es correcta esta configuración?
Redirecciona el tráfico del portal a HTTPS
Para redireccionar todo el tráfico del portal a HTTPS, actualiza el archivo sites/default/settings.local.php (nube) o sites/default/settings.php (nube privada). Las actualizaciones necesarias varían en función de si se redirecciona a HTTPS con el mismo nombre de host o con varios.
Redirecciona a HTTPS en el mismo nombre de host
Agrega el siguiente código a tu archivo sites/default/settings.local.php (cloud) o a sites/default/settings.php (nube privada) para redireccionar a todo el tráfico del portal a HTTPS en el mismo nombre de host (por ejemplo, *.devportal.apigee.io).
En esta situación, si un desarrollador visita tu portal en live-example.devportal.apigee.io, pero necesita acceder a un certificado que se subió para devportal.example.com, la solicitud fallará.
// 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; } }
Redirecciona a HTTPS en varios nombres de host
Agrega el siguiente código a tu archivo sites/default/settings.local.php (cloud) o al archivo sites/default/settings.php (nube privada) para redireccionar a todo el tráfico del portal a HTTPS en varios nombres de host.
// 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; } }