Edge para nuvem privada v. 4.16.09
O TLS (Transport Layer Security, cujo antecessor é o SSL) é a tecnologia de segurança padrão para garantir mensagens seguras e criptografadas no ambiente da API. É possível configurar o TLS nos nós do Portal da API BaaS e da pilha da API BaaS.
A imagem a seguir mostra um diagrama típico de implantação da API BaaS com um único nó do portal do BaaS e três nós da API BaaS Stack.
Os desenvolvedores usam um navegador para fazer solicitações ao Portal. Por padrão, as solicitações usam o protocolo HTTP na porta 9000 do nó do Portal.
Essa implantação inclui um balanceador de carga entre os nós do portal e da pilha. Nesta configuração, o portal faz solicitações HTTP ao balanceador de carga, que as encaminha para um dos nós da pilha. Este é o ambiente de implantação recomendado para um sistema de produção.
Opções de configuração de TLS
Ao configurar o TLS para o BaaS de API, você tem várias opções:
- Configurar o TLS no portal e no balanceador de carga para os nós da pilha
Nesta configuração, os desenvolvedores usam o protocolo HTTPS para acessar o portal, e o portal em execução no navegador usa HTTPS para fazer solicitações aos nós da pilha por meio do balanceador de carga. O balanceador de carga usa HTTP para acessar os nós da pilha. - Configurar o TLS no portal, no balanceador de carga e nos nós da pilha
Para mais segurança, configure o balanceador de carga para usar o TLS ao acessar os nós da pilha. - Configurar o TLS no Portal e em um único nó da pilha
Em um ambiente pequeno, como um ambiente de teste ou de desenvolvimento, talvez você tenha apenas um único nó da pilha, o que significa que não é necessário incluir um balanceador de carga. Nessa configuração, configure o TLS nos nós do Portal e da pilha. - Configurar o TLS em um balanceador de carga para o Portal
Uma opção não mostrada acima é usar um balanceador de carga na frente do nó do Portal. Nessa configuração, é possível configurar o TLS no balanceador de carga e, opcionalmente, na conexão entre o balanceador de carga e o portal.
Verifique se a porta TLS está aberta
Os procedimentos abaixo configuram o TLS na porta padrão do Portal 9000 e no nó de pilha 8080. No entanto, é possível mudar essa porta, se quiser.
Independentemente da porta usada, é necessário garantir que ela esteja aberta no nó. Por exemplo, use o seguinte comando para abrir a porta 8443:
$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose
Como configurar o TLS na pilha API BaaS
Por padrão, o TLS está desativado para a pilha API BaaS. Em seguida, acesse a API BaaS por HTTP usando o endereço IP ou o nome DNS do nó da pilha e a porta 8080. Exemplo:
http://stack_IP:8080
Como alternativa, é possível configurar o acesso TLS à API BaaS para que ela possa ser acessada na forma:
https://stack_IP:8080
Neste exemplo, você configura o acesso TLS para usar a porta 8080. No entanto, a porta 8080 não é necessária. É possível configurar a pilha para usar uma porta diferente. O único requisito é que o firewall permita o tráfego na porta especificada.
A pilha só pode oferecer suporte a um tipo de solicitação (HTTP ou HTTPS) em uma única porta. Portanto, se você configurar o acesso HTTPS na porta 8080, não poderá usar o HTTP para acessar a porta 8080. Se você configurar a pilha para usar a porta 8443 com HTTPS, ela não vai mais detectar a porta 8080.
Use o procedimento a seguir para configurar o acesso TLS à pilha:
- Gere o arquivo JKS do keystore que contém a certificação TLS e a chave privada. Para mais
informações, consulte Como configurar TLS/SSL para o Edge no
local.
Observação: verifique se a senha no keystore e na chave são iguais. - Copie o arquivo JKS do keystore para um diretório no nó da API, como /opt/apigee/customer/application. O diretório precisa ser acessível ao usuário "apigee".
- Mude a propriedade do arquivo JKS para o usuário "apigee":
> chown apigee:apigee /opt/apigee/customer/application/keystore.jks
em que keystore.jks é o nome do arquivo de keystore. - Edite o arquivo /opt/apigee/customer/application/usergrid.properties
para definir as propriedades a seguir, incluindo o caminho para o arquivo JKS e a senha no
keystore e na chave. Se ainda não existir, crie esse arquivo, para criar:
tomcat-
/opt/apigee/customer/application/keystore.jks
# Use essa propriedade para especificar uma porta diferente.
# tomcat-server_port=8080
Aviso: o valor senha precisa estar em texto simples. Portanto, proteja usergrid.properties contra acesso não autorizado.
Use a propriedade tomcat-server_keyalias para especificar o alias do keystore. Você definiu o alias da chave quando ela foi criada. Por exemplo, é possível definir essa opção usando a opção -alias no comando keytool.
Use tomcat-server_ssl.protocols para definir os protocolos TLS compatíveis com a pilha. Para conferir uma lista de protocolos com suporte do Java 8, consulte http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename. - Configure o nó da pilha:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Implante as mudanças no Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Reinicie a pilha BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Confirme se o TLS está funcionando executando o comando cURL abaixo no nó da pilha usando HTTPS:
> curl -k https://localhost:8080/status -v
Se o TLS estiver configurado corretamente, você verá uma resposta com informações de status.
Se você configurou o acesso TLS em uma porta diferente da 8080, modifique o comando acima para usar a porta correta. - Repita em todos os nós da pilha.
- Se você tiver um balanceador de carga na frente dos nós da pilha, configure o
balanceador de carga para fazer solicitações aos nós da pilha por HTTPS. Consulte a documentação do seu balanceador de carga para mais informações.
Se o portal fizer solicitações diretas para a pilha, configure o portal para acessar a pilha por HTTPS, conforme descrito na próxima seção. - Use o procedimento abaixo em "Configurar nós de pilha de BaaS de API para TLS na pilha ou no portal" para garantir que o nó da pilha tenha os URLs TLS corretos ao gerar respostas do usuário.
Como configurar o Portal para acessar a pilha por TLS
O Portal do BaaS em execução em um navegador funciona fazendo chamadas de API para a pilha do BaaS. Se você configurar a pilha BaaS para usar o TLS, também precisará configurar o Portal para fazer essas chamadas por HTTPS.
Uma instalação de API BaaS geralmente é configurada para:
- Usar um balanceador de carga entre os nós do Portal e da pilha
Configure o balanceador de carga para fazer solicitações aos nós da pilha por HTTPS. Consulte a documentação do balanceador de carga para mais informações.
Nessa configuração, o Portal pode acessar o balanceador de carga por HTTP ou HTTPS, dependendo de como você o configurou. Se o balanceador de carga usar TLS, siga o procedimento abaixo para configurar o portal para fazer solicitações ao balanceador de carga de HTTPS. - Fazer com que o portal faça solicitações diretas à pilha
Configure o portal para acessar a pilha por HTTPS, conforme descrito abaixo.
Use o procedimento a seguir para configurar o Portal do API BaaS para fazer chamadas de API por HTTPS:
- Configure o acesso TLS na pilha BaaS, conforme descrito acima, ou no balanceador de carga para os nós de pilha, conforme descrito na documentação do seu balanceador de carga.
- Edite /opt/apigee/customer/application/portal.properties
para definir a propriedade a seguir. Se esse arquivo não existir, crie-o:
baas.portal.config.overrideUrl=https://stackIP:port
Como valor dessa propriedade, especifique o endereço IP ou o nome DNS e a porta do nó da pilha da API para uma instalação de nó único ou do balanceador de carga, se houver um na frente dos nós da pilha da API BaaS. - Configure o nó do Portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Reinicie o portal usando o comando:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Se você usou um certificado autoassinado ao configurar o acesso TLS à pilha
acima, talvez seu navegador não permita solicitações à pilha pelo Portal. Se aparecer um erro no navegador informando que o acesso HTTPS à pilha não é permitido, solicite o seguinte URL no navegador e adicione uma exceção de segurança para permitir o acesso:
https://stackIP:port/status
Especifique o endereço IP ou o nome DNS e a porta do nó da pilha da API ou do balanceador de carga.
Como configurar o TLS no portal da API BaaS
Por padrão, os usuários acessam o portal fazendo solicitações HTTP não criptografadas pela porta 9000 no servidor do portal. É possível configurar o portal para usar HTTPS para criptografar os dados enviados de e para o portal.
Por padrão, você acessa o Portal por HTTP usando o endereço IP ou o nome DNS do nó do Portal e a porta 9000. Exemplo:
http://portal_IP:9000
Como alternativa, você pode configurar o acesso TLS ao Portal para acessá-lo no formulário:
https://portal_IP:9443
Neste exemplo, você configura o acesso TLS para usar a porta 9443. No entanto, a porta 9443 não é necessária. É possível configurar o portal para usar uma porta diferente.
O portal aceita apenas um tipo de solicitação (HTTP ou HTTPS) em uma única porta. Portanto, se você configurar o acesso HTTPS na porta 9000, não será possível usar HTTP para acessar a porta 9000. Se você configurar o Portal para usar a porta 9443 com HTTPS, ele não vai mais escutar na porta 9000.
Para configurar o TLS para o portal:
- Crie um arquivo de chave e um arquivo de certificado no formato PEM.
Observação: verifique se não há senha/senha longa na chave ou no certificado. - Copie os arquivos PEM para um diretório no nó do Portal, como /opt/apigee/customer/application. O diretório precisa ser acessível ao usuário "apigee".
- Mude a propriedade dos arquivos PEM para o usuário "apigee":
> chown apigee:apigee /opt/apigee/customer/application/*.PEM - Edite o arquivo /opt/apigee/customer/application/portal.properties
para definir as propriedades a seguir. Se esse arquivo não existir, crie-o:
baas.portal.ssl=on
baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
# Por padrão, o acesso TLS usa a porta 9000.
# Use essa propriedade para especificar uma porta diferente.
# baas.portal.listen=9000
Use baas.portal.ssl.protocols para definir os protocolos TLS aceitos pelo Portal. Para conferir uma lista de protocolos compatíveis, consulte a lista de nomes de protocolos SSL definidos pelo Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols. - Configure o nó do portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Implante a configuração:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - Reinicie o portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Use o procedimento abaixo em "Configurar nós de pilha do BaaS de API para TLS na pilha ou portal" para garantir que o nó de pilha tenha o URL TLS correto para o portal.
Configurar nós de API BaaS para TLS no Stack ou Portal
Se você incluir um balanceador de carga na frente dos nós da pilha ou do portal ou se ativar o TLS diretamente neles, precisará configurar os nós com os URLs corretos para acessar a pilha e o portal. Por exemplo, os nós da pilha exigem essas informações quando:
- Incluir um URL nas respostas em solicitações da API BaaS.
- Adicionar links em modelos de e-mail ao redefinir uma senha ou enviar outras notificações.
- Redirecionar os usuários para páginas específicas do portal.
Se você usar um balanceador de carga na frente dos nós da pilha ou configurar o TLS no nó da pilha, defina as seguintes propriedades em /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_swagger.basepath=http://localhost:8080 usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw
Substitua http://localhost:8080 pelo URL do balanceador de carga. Se o balanceador de carga estiver configurado para usar TLS, use o protocolo HTTPS. Só é necessário incluir a porta se você estiver usando uma porta não padrão, ou seja, algo diferente da porta 80 para HTTP e da porta 443 para HTTPS.
Também será preciso definir a seguinte propriedade em /opt/apigee/customer/application/portal.properties se você usar um balanceador de carga na frente dos nós de pilha:
baas.portal.config.overrideUrl=http://localhost:8080
Substitua http://localhost:8080 pelo URL do balanceador de carga da pilha.
Se você usar um balanceador de carga na frente do nó do portal ou configurar o TLS no nó "Stack", defina as seguintes propriedades em usergrid.properties:
usergrid-deployment_usergrid.view.management.organizations.organization.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000 usergrid-deployment_usergrid.view.management.users.user.confirm=http://localhost:9000
Substitua http://localhost:9000 pelo URL do balanceador de carga. Se o balanceador de carga estiver configurado para usar TLS, use o protocolo HTTPS. Você só precisa incluir a porta se estiver usando uma porta não padrão, ou seja, algo diferente da porta 80 para HTTP e 443 para HTTPS.
Depois de editar usergrid.properties:
- Configure o nó da pilha:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure - Implante as mudanças no Tomcat:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - Reinicie a pilha BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Se você modificou portal.properties, configure
o nó do portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configure - Implante as mudanças:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal deploy - Reinicie o portal do BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart