Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Você pode configurar o portal para usar o TLS. O procedimento de configuração do TLS para o portal depende de como você o implantou:
- Cloud: configure o TLS do Pantheon ou do Acquia, os serviços de hospedagem baseados na nuvem do portal.
- Apigee Edge para nuvem privada: configure o TLS no local no servidor que hospeda o portal.
TLS e o portal
A imagem a seguir mostra os dois locais em que o portal usa o TLS:
- Para comunicação entre o portal e a API Edge Management.
O portal não funciona como um sistema autônomo. Em vez disso, grande parte das informações usadas pelo portal é armazenada no Edge, onde o Edge pode ser implantado na nuvem ou no local como uma instalação de nuvem privada. Quando necessário, o portal faz uma solicitação HTTP ou HTTPS à API Edge Management para recuperar ou enviar informações.
Ao criar um portal, uma das primeiras etapas que você precisa realizar é especificar o URL da API de gerenciamento de borda. Dependendo de como a API Edge Management estiver configurada, esse URL poderá usar o TLS. Consulte Comece a criar seu portal do desenvolvedor para mais informações. - Para a comunicação entre os desenvolvedores e o portal.
Quando você usa o portal de serviços para desenvolvedores para implantar as APIs, seus desenvolvedores fazem login no portal para registrar apps e receber chaves de API. As credenciais de login e a chave de API são informações reservadas que você quer enviar por HTTPS para garantir a segurança delas. Esse tipo de informação reservada deve ser enviado por HTTPS.
A maneira como você configura o TLS para esse cenário depende de como o portal foi implantado: cloud ou Apigee Edge para nuvem privada. As seções a seguir descrevem os 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 o 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 por HTTP. Portanto, como desenvolvedor de portal, você só precisa saber como o Edge está configurado para definir a conexão entre o portal e o Edge.
Para saber o procedimento usado para configurar a conexão com a API Edge Management, consulte Começar a criar seu portal do desenvolvedor.
Versão do Edge baseada na nuvem
Se o portal se conectar à versão do Edge baseada na nuvem, o URL da API Edge Management será pré-configurado 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 do Edge na nuvem privada
Para uma instalação de nuvem privada do Edge, o URL da API de gerenciamento de borda tem este formato:
http://EdgePrivateCloudIp:8080/v1?
ou:
https://EdgePrivateCloudIp:TLSport/v1
em que EdgePrivateCloudIp é o endereço IP do servidor de gerenciamento de borda 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 desenvolvedores e o portal
A maneira como você configura o TLS entre os desenvolvedores e o portal depende de como o portal foi implantado: cloud ou Apigee Edge para nuvem privada.
Portais baseados na nuvem
Panteão (em inglês)
A Pantheon oferece HTTPS automatizado e sem custo financeiro para todos os sites da plataforma pela Cantheon Global CDN e usando o Let's Encrypt (em inglês). Consulte também HTTPS na CDN global do Pantheon.
Acquia
Para ativar TLS/SSL usando Acquia, consulte Como ativar SSL.Edge para portais de nuvem privada
Todas as instalações de nuvem privada recomendadas da Apigee no portal exigem que o portal tenha um balanceador de carga, conforme mostrado abaixo:
Portanto, para instalações no local, você tem duas opções para configurar o TLS:
- Configurar o TLS no balanceador de carga: configure o TLS no próprio balanceador de carga, não no portal. O procedimento usado para configurar o TLS depende do balanceador de carga. Consulte a documentação sobre seu balanceador de carga para mais informações.
- Configurar o TLS no próprio portal: se necessário, configure o TLS no servidor da Web que hospeda o portal. Por padrão, a Apigee instala o servidor da Web Apache. Para informações sobre como configurar o TLS para o Apache, consulte Como ativar o HTTP Secure (HTTPS) .
Você precisa conseguir seu próprio certificado TLS antes de implantar o portal em um ambiente de produção.
Como definir outras configurações de TLS
Você pode editar o arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (Nuvem privada) para mudar a configuração do 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: ini_set (em inglês).
É possível definir as seguintes propriedades no arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (Nuvem privada):
- cookie_httponly: (recomendado) especifica esse cookie como acessível somente pelo protocolo HTTP. Defina a 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, isso significa que todo o conteúdo precisa ser exibido por HTTPS. Se essa configuração estiver ativada, o site não funcionará por HTTP. Definir essa propriedade como:
ini_set('session.cookie_secure', true); - gc_maslifetime e cookie_lifetime: (opcional) gc_lifeteime especificam o número de segundos em que os dados podem ser apagados, e cookie_lifetime especifica o ciclo de vida do cookie em segundos. Defina as propriedades como:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Para mais informações sobre como configurar o TLS entre o portal do desenvolvedor e os clientes, consulte Ativar SSL para comunicação HTTPS segura no site de documentos do Pantheon.
Como configurar o TLS com balanceadores de carga
Para melhorar o desempenho, os balanceadores de carga às vezes são configurados para encerrar o TLS. Com o encerramento do TLS, os balanceadores de carga descriptografam mensagens enviadas por https:// e encaminham as mensagens para servidores de back-end por http://. Isso economiza aos servidores de back-end a sobrecarga de descriptografar mensagens https://.
Se os balanceadores de carga encaminharem mensagens HTTP não criptografadas para servidores no mesmo data center, a segurança não será um problema. No entanto, se os balanceadores de carga encaminharem mensagens por http:// para servidores fora do data center, como o portal do desenvolvedor da Apigee, as mensagens não serão criptografadas, o que criará uma falha de segurança.
Se o portal do desenvolvedor fica atrás de balanceadores de carga que usam o encerramento de TLS e você quer que todo o tráfego seja veiculado por https://, as páginas do site precisam ter somente links https://, e você precisa adicionar o seguinte código ao seu arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (nuvem privada). Como o balanceador de carga não transforma automaticamente o conteúdo das 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 ao arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (Nuvem 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; } }
Confira mais informações:
- Como usar um balanceador de carga ou proxy reverso
- Suporte a alternativas de cabeçalhos HTTP X-Forwarded-*
- Drupal por trás de um proxy reverso de descarregamento de SSL. Essa configuração está correta?
Como redirecionar o tráfego do portal para HTTPS
É possível redirecionar todo o tráfego do portal para HTTPS atualizando seu arquivo sites/default/settings.local.php (nuvem) ou sites/default/settings.php (Nuvem privada). As atualizações necessárias variam de acordo com o redirecionamento para HTTPS no mesmo nome de host ou em vários.
Redirecionamento para HTTPS no mesmo nome 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 todo o tráfego do portal para HTTPS no mesmo nome de host (por exemplo, *.devportal.apigee.io).
Nesse cenário, se um desenvolvedor acessar seu portal em live-example.devportal.apigee.io, mas precisar acessar um certificado que foi enviado para devportal.example.com, a solicitação vai 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; } }
Como redirecionar 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 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; } }