Usa TLS en el portal

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. Procedimiento de configuración de TLS para el portal depende de cómo hayas implementado el portal:

  • Nube: Configura TLS desde Pantheon o Acquia, el hosting basado en la nube servicios 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:

  1. 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 usan el portal se almacena en Edge, donde Edge puede implementarse en la nube a nivel local como una instalación de nube privada. Cuando es necesario, el portal crea una solicitud a la API de Edge Management para recuperar información o enviarla.

    Cuando creas tu portal, uno de los primeros pasos que debes realizar es especificar la URL del la API de Edge Management. Según cómo esté configurada la API de Edge Management, esa URL puedan usar TLS. Consulta Creación un portal para desarrolladores y obtén más información.
  2. Para la comunicación entre los desarrolladores y el portal.

    Cuando usas el portal de Servicios para desarrolladores para implementar tus APIs, tus desarrolladores acceden para registrar apps y recibir claves de API. Las credenciales de acceso y la clave de API se privada que desea enviar a través de HTTPS para garantizar su seguridad. Esta el tipo de información de propiedad se debe enviar a través de HTTPS.

    La forma de configurar TLS en este caso depende de cómo implementaste Cloud o Apigee Edge para la nube privada. En las siguientes secciones, se describe en ambas situaciones.

Configura TLS entre el portal y la API de Edge Management

La configuración de esta API determina si la comunicación puede usar TLS. 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 debes 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 Cómo crear un desarrollador portal.

Versión de Edge basada en la nube

Si tu portal se conecta a la versión de Edge basada en la nube, entonces la URL de Edge Management de Google está preconfigurada por Apigee para usar TLS. Cuando configuras el portal, accedes 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 se encuentra en formulario:
http://EdgePrivateCloudIp:8080/v1
o:
https://EdgePrivateCloudIp:TLSport/v1

en el que EdgePrivateCloudIp es la dirección IP de la administración perimetral El servidor del servidor y TLSport es el puerto TLS para 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.

Configurar TLS entre desarrolladores y el portal

La forma de configurar TLS entre los desarrolladores y el portal depende de cómo implementaste 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 privacidad Portales de Cloud

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 usas para configurar TLS que depende del balanceador de cargas. Consulta la documentación sobre tu balanceador de cargas para obtener más información información.
  • Configurar TLS en el portal: si es necesario, puedes configurar TLS en el servidor web que aloja el portal. Consulta Cómo configurar el portal para que use HTTPS para obtener más información.

Debes obtener tu propio certificado TLS para poder implementar el portal en un entorno en un entorno de nube.

Configurando configuración de TLS adicional

Puedes editar sites/default/settings.local.php (nube). o sites/default/settings.php (privado Cloud) para realizar cambios en la configuración de TLS para el 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: http://php.net/manual/en/function.ini-set.php.

Puedes configurar las siguientes propiedades en sites/default/settings.local.php (nube) o sites/default/settings.php (privado Cloud):

  • cookie_httponly: (Recomendado) Especifica que la cookie solo se pueda acceder a través del protocolo HTTP. Establecer propiedad como:

    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, significa que todo el contenido debe entregarse a través de HTTPS. Si habilitas esta configuración, el sitio no funcionan a través de HTTP. Configurar esta propiedad como:

    ini_set('session.cookie_secure', true);
  • gc_maxlifetime y cookie_lifetime: (Opcional) gc_lifeteime Especifica la cantidad de segundos después de los cuales los datos pueden limpiarse y cookie_lifetime especifica los la vida útil de la cookie en segundos. Configura estas propiedades de la siguiente manera:

    ini_set('session.gc_maxlifetime', 3,600);
    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 Habilita SSL para la comunicación HTTPS segura en el sitio de la documentación de Pantheon.

Configurando 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 al backend servidores a través de http://. Eso ahorra a los servidores de backend la sobrecarga de desencriptar mensajes https:// por sí mismos.

Si los balanceadores de cargas reenvían mensajes HTTP sin encriptar a servidores 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 de los datos como el portal para desarrolladores de Apigee, los mensajes no están encriptados, lo que abre un obstáculo de seguridad.

Si tu portal para desarrolladores está detrás de balanceadores de cargas que usan la finalización de TLS y quieres que todo el tráfico se publique a través de https://, las páginas del sitio web deberán Solo contienen vínculos https://. Además, deberás agregar el siguiente código al portal para desarrolladores sites/default/settings.local.php (cloud) o sites/default/settings.php (Privado) Cloud). Debido a que el balanceador de cargas no transforma automáticamente el contenido del En 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 a sites/default/settings.local.php (nube). o sites/default/settings.php (Privado) Cloud):

// 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:

Redirecciona el tráfico del portal a HTTPS

Para redireccionar todo el tráfico del portal a HTTPS, actualiza sites/default/settings.local.php (nube). o sites/default/settings.php (Privado) Cloud). Las actualizaciones necesarias varían en función de si se redirecciona a HTTPS en la misma o varios nombres de host.

Redireccionando a HTTPS en el mismo nombre de host

Agrega el siguiente código a sites/default/settings.local.php (cloud) o archivo sites/default/settings.php (nube privada) a 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 fallan.

// 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;
  }
}

Redireccionando a HTTPS en varios nombres de host

Agrega el siguiente código a tu archivo sites/default/settings.local.php (cloud). archivo sites/default/settings.php (nube privada) a 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;
  }
}