Como usar o TLS no portal

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Você pode configurar o portal para usar o TLS. Procedimento de configuração de TLS para o portal depende de como você implantou o portal:

  • Cloud: configure o TLS do Pantheon ou da Acquia, a hospedagem baseada na nuvem serviços para o portal.
  • Apigee Edge for Private Cloud: configure o TLS no local no servidor que hospeda o portal.
.

TLS e o portal

A imagem abaixo mostra os dois lugares em que o portal usa TLS:

  1. Para comunicação entre o portal e a API Edge Management.

    O portal não funciona como um sistema independente. Em vez disso, grande parte das informações usadas pelos o portal é armazenado no Edge, onde ele pode ser implantado na nuvem no local como uma instalação de nuvem privada. Quando necessário, o portal cria uma solicitação solicitação à API Edge Management para recuperar ou enviar informações.

    Ao criar seu portal, uma das primeiras etapas a serem realizadas é especificar o URL do a API Edge Management. Dependendo de como a API Edge Management estiver configurada, esse URL podem usar TLS. Consulte Como criar no portal do desenvolvedor.
  2. Para comunicação entre desenvolvedores e o portal.

    Quando você usa o portal de serviços para desenvolvedores para implantar suas APIs, seus desenvolvedores fazem login no para registrar apps e receber chaves de API. As credenciais de login e a chave de API são informações reservadas que você deseja enviar por HTTPS para garantir sua segurança. Isso tipo de informação reservada deve ser enviado por HTTPS.

    A maneira de configurar o TLS para esse cenário depende de como você implantou o portal: cloud ou Apigee Edge para nuvem privada. As seções a seguir descrevem nos dois cenários.

Como configurar o TLS entre o portal e a API Edge Management

A configuração da API Edge Management determina se a comunicação pode ou não usar TLS. Se a API Edge Management estiver configurada para usar TLS, o portal poderá usar HTTPS. Caso contrário, o portal se comunicará com o Edge via HTTP. Portanto, como desenvolvedor de portais, só precisa saber como o Edge está configurado para definir a conexão entre o portal e Borda

Para o procedimento usado para configurar a conexão com a API Edge Management, consulte Como criar um desenvolvedor do Cloud Storage.

Versão do Edge baseada na nuvem

Se o portal se conectar à versão baseada na nuvem do Edge, o URL do Edge será Management é pré-configurada pela Apigee para usar o TLS. Ao configurar o portal, você acessa a API Edge Management usando o URL https://api.enterprise.apigee.com/v1;

Instalação da nuvem privada do Edge

Para uma instalação de nuvem privada do Edge, o URL da API de gerenciamento do Edge está no formulário:
http://EdgePrivateCloudIp:8080/v1
ou:
https://EdgePrivateCloudIp:TLSport/v1

em que EdgePrivateCloudIp é o endereço IP do Edge Management O servidor do servidor e TLSport é a porta TLS da API de gerenciamento de borda. Por exemplo, o número da porta pode ser 8443 ou até 8080, com base na configuração do Edge.

Configurar o TLS entre os desenvolvedores e o Portal

A maneira de configurar o TLS entre os desenvolvedores e o portal depende de como você implantou o portal: cloud ou Apigee Edge para nuvem privada.

Portais baseados na nuvem

Pantheon (em inglês)

A Pantheon oferece HTTPS automatizado sem custo financeiro para todos os sites na plataforma por meio da Cantheon Global CDN e do uso do Let's Encrypt (em inglês). Consulte também HTTPS na CDN global do Pantheon.

Acquia

Para ativar o TLS/SSL usando o Acquia, consulte Ativar SSL.

Edge para particular Portais na nuvem

Todas as instalações de nuvem privada recomendadas pela Apigee exigem que o portal seja por trás de um balanceador de carga, conforme mostrado abaixo:

Portanto, para instalações locais, você tem duas opções para configurar o TLS:

  • Configurar TLS no balanceador de carga: configure o TLS no balanceador de carga e não no portal. Portanto, o procedimento usado para configurar o TLS é que dependem do balanceador de carga. Consulte a documentação do seu balanceador de carga para mais informações imprecisas ou inadequadas.
  • Configurar o TLS no próprio portal: se necessário, configure o TLS nos o servidor da Web que hospeda o portal. Consulte Como configurar o portal para usar HTTPS para mais informações.

É necessário ter seu próprio certificado TLS antes de implantar o portal em uma produção de nuvem.

Como configurar configurações de TLS adicionais

Você pode editar o arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (particular Cloud) para fazer alterações na configuração de TLS do portal.

Ao editar o arquivo, adicione instâncias da função ini_set() para definir uma propriedade. Para mais informações sobre essa função, consulte: http://php.net/manual/en/function.ini-set.php.

É possível definir as seguintes propriedades em sites/default/settings.local.php (nuvem) ou sites/default/settings.php (particular Cloud):

  • cookie_httponly: (Recomendado) Especifica esse cookie como acessível somente pelo protocolo HTTP. Definir isto propriedade como:

    ini_set('session.cookie_httponly', true);
  • session.cookie_secure - (opcional) especifica que os cookies só podem ser enviados por conexões seguras. No entanto, significa que todo o conteúdo precisa ser exibido por HTTPS. Se essa configuração for ativada, o site não que trabalham com HTTP. Definir esta propriedade como:

    ini_set('session.cookie_secure', true);
  • gc_maxlifetime e cookie_lifetime: (Opcional) gc_lifeteime especifica o número de segundos após os quais os dados podem ser potencialmente limpos e cookie_lifetime especifica a vida útil do cookie em segundos. Definir essas propriedades como:

    ini_set('session.gc_maxlifetime', 3.600);
    ini_set('session.cookie_lifetime', 3600);

Para mais informações sobre como configurar o TLS entre o portal do desenvolvedor e os clientes, consulte Ative o SSL para comunicação HTTPS segura no site do documento Pantheon.

Como configurar TLS com balanceadores de carga

Para melhorar o desempenho, os balanceadores de carga às vezes são configurados para encerrar TLS. Com o encerramento de TLS, os balanceadores de carga descriptografam as mensagens enviadas por https:// e as encaminham para o back-end. por http://. Isso economiza aos servidores de back-end a sobrecarga de descriptografar mensagens https://.

Se balanceadores de carga encaminharem mensagens http não criptografadas para servidores no mesmo data center, a segurança não é um problema. No entanto, se os balanceadores de carga encaminharem mensagens por http:// para servidores fora dos dados central, como o portal de desenvolvedores da Apigee, as mensagens não são criptografadas, o que abre uma uma falha de segurança.

Se o portal do desenvolvedor estiver protegido por balanceadores de carga que usam terminação TLS e você quiser que todo o tráfego seja veiculado por https://, as páginas do site terão que conter apenas links https:// Adicione o código a seguir ao portal sites/default/settings.local.php (nuvem) ou sites/default/settings.php (particular Cloud). Como o balanceador de carga não transforma automaticamente o conteúdo do páginas HTML, o código garante que todos os links transmitidos ao cliente comecem com https://.

Para configurar o TLS com balanceadores de carga, adicione as seguintes linhas a sites/default/settings.local.php (nuvem) ou sites/default/settings.php (particular 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;
  }
}

Confira mais informações em:

Como redirecionar o tráfego do portal para HTTPS

É possível redirecionar todo o tráfego do portal para HTTPS atualizando sites/default/settings.local.php (nuvem) ou sites/default/settings.php (particular Cloud). As atualizações necessárias variam dependendo do tipo de redirecionamento para HTTPS ou do mesmo ou vários nomes de host.

Redirecionando para HTTPS no mesmo nome de host

Adicione o seguinte código ao arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (nuvem privada) para redirecionar para todo o tráfego do portal para HTTPS no mesmo nome de host (por exemplo, *.devportal.apigee.io);

Neste cenário, se um desenvolvedor acessar seu portal em live-example.devportal.apigee.io, mas precisar acessar um certificado que foi carregado para devportal.example.com, a solicitação falhar.

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

Redirecionando para HTTPS em vários nomes de host

Adicione o seguinte código ao seu arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (nuvem privada) para redirecionar para todo o tráfego do portal para HTTPS em vários nomes 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;
  }
}