Edge para nuvem privada v4.18.01
O Transport Layer Security (TLS, na sigla em inglês), cujo antecessor é SSL, é a tecnologia de segurança padrão usada para garantir mensagens seguras e criptografadas em todo o ambiente de API. É possível configurar o TLS no portal do BaaS da API e nos nós da pilha da API.
A imagem a seguir mostra um diagrama de implantação típico para a API BaaS com um único nó de portal do BaaS e três nós de pilha da API BaaS.
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.
Esta implantação inclui um balanceador de carga entre os nós do portal e da pilha. Nessa configuração, o portal faz solicitações HTTP ao balanceador de carga, que as encaminha para um dos nós da pilha. Esse é o ambiente de implantação recomendado para um sistema de produção.
Opções de configuração de TLS
Há várias opções para configurar o TLS para o BaaS da API:
- Configure 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 aumentar a segurança, configure o balanceador de carga para usar TLS e acessar os nós da pilha. - Configure o TLS no portal e em um único nó da pilha
Em um ambiente pequeno, como em um ambiente de teste ou desenvolvimento, talvez você tenha apenas um 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.
Verificar se a porta TLS está aberta
Os procedimentos abaixo configuram o TLS na porta do portal padrão 9000 e no nó de pilha de 8080. No entanto, é possível alterá-la se quiser.
Seja qual for a 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 de BaaS da API
Por padrão, o TLS está desativado para a pilha de API BaaS. Em seguida, você acessa a API BaaS por HTTP usando o endereço IP ou o nome DNS do nó da pilha e da porta 8080. Exemplo:
http://stack_IP:8080
Também é possível configurar o acesso TLS à API BaaS para acessá-la usando o formato:
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. Você pode configurar a pilha para usar uma porta diferente. O único requisito é que o firewall permita o tráfego na porta especificada.
A pilha só oferece 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 será possível usar o HTTP para acessar essa porta. Se você configurar a pilha para usar a porta 8443 com HTTPS, ela não detectará mais 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 local.
Observação: verifique se a senha no keystore e a chave são a mesma. - Copie o arquivo JKS do keystore para um diretório no nó da pilha, como /opt/apigee/customer/application. O diretório precisa estar 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 seu 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 o arquivo não existir, crie-o:
tomcat-server_scheme=https
tomcat-server_secure=true
tomcat-server_ssl.enabled=true
tomcat-server_keystore.type=JKS
tomcat-server_keystore.file=/opt/apigee/customer/application/keystore_jkserver.password1
tomcat-servidor_TLS1,pt-br.auth_server.
/opt/apigee/customer/application/keystore.jks
# Use esta propriedade para especificar uma porta diferente.
# tomcat-server_port=8080
Aviso: o valor da senha precisa estar em texto não criptografado. Portanto, você precisa proteger 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 no momento da criação da chave. Por exemplo, você pode configurá-lo usando a opção -alias no comando keytool.
Use tomcat-server_ssl.protocols para definir os protocolos TLS compatíveis com a pilha. Para uma lista de protocolos compatíveis com o Java 8, acesse http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename. - Configure o nó "Stack":
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configurar - Reinicie a pilha BaaS:
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart - Para confirmar se o TLS está funcionando, execute o comando cURL a seguir no nó "Stack" usando HTTPS:
> curl -k https://localhost:8080/status -v
Se o TLS estiver configurado corretamente, você verá uma resposta com as informações de status.
Se você configurou o acesso TLS por 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
para fazer solicitações aos nós da pilha por HTTPS. Para mais informações, consulte a documentação do balanceador de carga.
Se o portal fizer solicitações diretas à pilha, configure-o para acessá-la por HTTPS, conforme descrito na seção a seguir. - Use o procedimento abaixo em "Configurar nós da pilha da API BaaS 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.
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 TLS, também precisará configurar o portal para fazer essas chamadas por HTTPS.
Uma instalação da API BaaS normalmente é 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. Para mais informações, consulte a documentação do balanceador de carga.
Nesta configuração, o portal pode acessar o balanceador de carga por HTTP ou HTTPS, dependendo de como ele foi configurado. Se o balanceador de carga usar TLS, siga o procedimento abaixo para configurar o portal de modo a fazer solicitações de HTTPS ao balanceador de carga. - Peça ao portal para fazer 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 BaaS da API e 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 da 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
Especifique como valor desta propriedade o endereço IP ou o nome DNS e a porta do nó da pilha de API para uma instalação de nó único, ou do balanceador de carga se tiver um balanceador de carga na frente dos nós da pilha da API BaaS. - Configure o nó do portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal configurar - Reinicie o portal usando este comando:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Se você usou um certificado autoassinado ao configurar o acesso TLS à pilha
acima, é possível que seu navegador não permita solicitações do portal para a pilha. 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 de APIs 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 e criptografar os dados enviados e recebidos dele.
Por padrão, você acessa o portal por HTTP usando o endereço IP ou o nome DNS do nó do portal e da porta 9000. Exemplo:
http://portal_IP:9000
Também é possível configurar o acesso TLS ao portal para acessá-lo usando o 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. Você pode 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 o HTTP para acessar essa porta. Se você configurar o portal para usar a porta 9443 com HTTPS, ele não detectará mais a porta 9000.
Para configurar o TLS para o portal:
- Crie um arquivo de chave e um de certificado no formato PEM.
Observação: verifique se não há senha/senha 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 estar 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 o 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
TLS baas.portal1.protocols=TLS1.0
# Use esta propriedade para especificar uma porta diferente.
# baas.portal.listen=9000
Use baas.portal.ssl.protocols para definir os protocolos TLS compatíveis com o portal. Para ver uma lista de protocolos compatíveis, consulte a lista de nomes de protocolo 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 configurar - Reinicie o portal:
> /opt/apigee/apigee-service/bin/apigee-service baas-portal restart - Use o procedimento abaixo em "Configurar nós da pilha da API BaaS para TLS na pilha ou no portal" para garantir que o nó da pilha tenha o URL TLS correto para o portal.
Configurar nós do BaaS da API para TLS na pilha ou no portal
Se você incluir um balanceador de carga na frente dos nós da pilha ou do portal, ou se ativar o TLS diretamente no nó do portal ou da pilha, será necessário 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:
- Como incluir um URL nas respostas nas solicitações da API BaaS.
- adicionar links em modelos de e-mail ao redefinir uma senha ou enviar outras notificações;
- Redirecionamento de usuários a 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 a seguinte propriedade em /opt/apigee/customer/application/usergrid.properties:
usergrid-deployment_usergrid.api.url.base=http://localhost:8080
Substitua http://localhost:8080 pelo URL do balanceador de carga. Se o balanceador de carga estiver configurado para usar TLS, utilize o protocolo HTTPS. Você só precisará incluir a porta se 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á necessário definir a seguinte propriedade em /opt/apigee/customer/application/portal.properties se você usar um balanceador de carga na frente dos nós da 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_portal.url=http://localhost:9000
Substitua http://localhost:9000 pelo URL do balanceador de carga. Se o balanceador de carga estiver configurado para usar TLS, utilize o protocolo HTTPS. Você só precisará incluir a porta se estiver usando uma porta não padrão, ou seja, algo diferente da porta 80 para HTTP e da porta 443 para HTTPS.
Após editar usergrid.properties:
- Configure o nó "Stack":
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configurar - 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 configuração - Reinicie o portal do BaaS:
> /opt/apigee/apigee-service/bin/apigee-service restart baas-portal