Configuração de SSL
Índice
Conceito
O SSL/TLS é utilizado para estabelecer uma comunicação segura entre o cliente e o servidor, permitindo que aplicações sejam acessadas através do protocolo HTTPS.
A configuração do SSL não precisa necessariamente ser realizada diretamente no serviço da aplicação. É possível utilizar um servidor intermediário responsável por receber as conexões HTTPS e encaminhar as requisições para a aplicação.
Esse componente atua como um proxy reverso.
Um exemplo dessa arquitetura é a utilização do IIS, onde o certificado SSL é configurado no servidor e o IIS recebe as requisições HTTPS, encaminhando posteriormente as solicitações para o serviço da aplicação.
Para que Serve
A utilização de SSL/TLS permite disponibilizar a aplicação por meio do protocolo HTTPS, garantindo uma comunicação segura entre o cliente e o servidor. Nesse cenário, o uso de um proxy reverso permite separar a camada responsável pelo acesso externo da aplicação que é executada internamente no servidor, possibilitando que a aplicação continue utilizando uma porta interna enquanto o acesso externo seja realizado por meio de um endereço HTTPS.
Arquitetura
Considerando uma aplicação executando internamente na porta 8152 e utilizando o IIS como proxy reverso, o fluxo de comunicação será:
INTERNET
|
| HTTPS
| Porta 443
v
+-----------------+
| IIS |
| |
| Certificado SSL |
| Binding HTTPS |
| Proxy Reverso |
+--------+--------+
|
| HTTP interno
| Porta 8152
v
+-----------------+
| Aplicação |
| |
| Porta 8152 |
+-----------------+
O cliente acessa somente o endereço externo da aplicação:
https://api.exemplo.com.br
Internamente, o IIS encaminha a requisição para:
http://localhost:8152
A aplicação permanece executando na porta interna configurada para o serviço.
Configuração
A configuração do acesso HTTPS envolve principalmente os seguintes componentes:
- Domínio utilizado para acesso à aplicação;
- Certificado SSL/TLS;
- Binding HTTPS no servidor;
- Porta utilizada para HTTPS;
- Configuração do proxy reverso;
- Endereço e porta interna da aplicação.
No cenário utilizando IIS, o certificado é instalado no servidor e associado ao domínio através do Binding HTTPS.
Exemplo:
| Configuração | Valor |
|---|---|
| Tipo | HTTPS |
| Porta | 443 |
| Domínio | api.exemplo.com.br |
| Certificado | Certificado correspondente ao domínio |
Após a configuração do HTTPS, o IIS passa a receber as requisições destinadas ao domínio.
Proxy Reverso
O proxy reverso é responsável por encaminhar as requisições recebidas pelo servidor para a aplicação que está executando internamente.
Por exemplo, quando o cliente acessar:
https://api.exemplo.com.br/clientes
o IIS poderá encaminhar a requisição para:
http://localhost:8152/clientes
Dessa forma, a aplicação não precisa estar diretamente exposta na Internet.
No IIS, o proxy reverso pode ser configurado utilizando recursos como o URL Rewrite e o Application Request Routing (ARR).
Certificado SSL
O certificado SSL/TLS deve ser válido para o domínio utilizado no acesso à aplicação.
Por exemplo, para o endereço:
https://api.exemplo.com.br
o certificado deverá contemplar o domínio utilizado.
O certificado é instalado no servidor responsável pelo recebimento das conexões HTTPS e posteriormente associado ao Binding HTTPS do site.
A aplicação não precisa necessariamente possuir o certificado instalado quando o HTTPS é encerrado no proxy reverso.
Exemplo de configuração
Considerando os seguintes parâmetros:
| Item | Configuração |
|---|---|
| Domínio | https://api.exemplo.com.br |
| Porta HTTPS | 443 |
| Porta interna | 8152 |
| Servidor | IIS |
A comunicação será realizada da seguinte forma:
Cliente | | HTTPS :443 v IIS | | Proxy Reverso v Aplicação :8152
Quando o cliente realizar uma requisição:
https://api.exemplo.com.br/pessoas
o IIS receberá a requisição HTTPS e encaminhará internamente:
http://localhost:8152/pessoas
A resposta da aplicação retornará ao IIS, que será responsável por devolvê-la ao cliente através da conexão HTTPS.
Segurança
A porta utilizada pela aplicação internamente, como a 8152, não deve ser disponibilizada diretamente para a Internet quando a aplicação estiver sendo publicada através de um proxy reverso.
O acesso externo deve ser realizado pelo endereço HTTPS configurado no proxy.
Dessa forma, o acesso esperado é:
Cliente | | HTTPS :443 v IIS | | HTTP interno v Aplicação :8152
A porta interna pode ser protegida através das configurações de firewall e rede do ambiente.
Quando o IIS e a aplicação estão no mesmo servidor, a comunicação entre o proxy e a aplicação pode ocorrer internamente através de HTTP, pois essa comunicação não é realizada diretamente pela Internet.
Caso o proxy reverso e a aplicação estejam em servidores diferentes, deve ser avaliada a necessidade de utilizar HTTPS também na comunicação interna.
Outras soluções
O IIS é apenas uma das soluções que podem ser utilizadas para implementar essa arquitetura.
Também podem ser utilizados outros servidores e ferramentas que possuam suporte a HTTPS e proxy reverso, como:
- Nginx;
- Apache;
- Traefik;
- Outros gateways ou servidores compatíveis.
Independentemente da tecnologia utilizada, o conceito permanece o mesmo:
Cliente | | HTTPS v Proxy Reverso | | Comunicação interna v Aplicação
O componente responsável pelo proxy recebe a conexão HTTPS, utiliza o certificado SSL/TLS configurado e encaminha a requisição para a aplicação.
Certificado
Verificar:
- Se o certificado corresponde ao domínio;
- Se o certificado está dentro do prazo de validade;
- Se a cadeia de certificados está correta;
- Se o certificado é reconhecido como válido pelo cliente.
HTTPS
Testar o acesso através do endereço configurado:
https://api.exemplo.com.br
Aplicação
Verificar se a aplicação está executando e respondendo na porta interna:
http://localhost:8152
Proxy Reverso
Verificar se as requisições recebidas pelo IIS estão sendo encaminhadas corretamente para a aplicação.
Rede
Verificar se a porta interna utilizada pela aplicação não está exposta desnecessariamente para acesso externo.
Renovação do Certificado
Quando o certificado SSL estiver próximo do vencimento ou precisar ser substituído, a alteração deverá ser realizada no componente responsável pelo HTTPS.
No cenário utilizando IIS:
- Obter o novo certificado.
- Instalar o certificado no servidor.
- Acessar o IIS.
- Localizar o Binding HTTPS.
- Associar o novo certificado ao domínio.
- Salvar a configuração.
- Validar o acesso HTTPS.
A aplicação que continua executando na porta interna não precisa necessariamente ser alterada, pois o certificado é utilizado pelo IIS.
Considerações
A configuração do SSL não está necessariamente vinculada à aplicação.
O SSL/TLS pode ser tratado por uma camada de infraestrutura localizada antes da aplicação. Essa camada pode ser o IIS, Nginx, Apache, Traefik ou outra solução equivalente.
A arquitetura pode ser dividida em duas camadas:
Camada externa
Responsável por:
- Domínio;
- HTTPS;
- Certificado SSL/TLS;
- Porta 443;
- Controle de acesso;
- Proxy reverso.
Camada interna
Responsável por:
- Execução do serviço;
- Porta da aplicação;
- Processamento das requisições;
- Regras de negócio.
No cenário utilizado pela PHSYS, o IIS é um exemplo de componente utilizado para realizar essa separação. A aplicação permanece executando internamente, enquanto o IIS disponibiliza o acesso externo seguro e encaminha as requisições para o serviço.
Conclusão
A utilização de um proxy reverso permite disponibilizar aplicações através de HTTPS sem que o certificado SSL precise necessariamente ser configurado diretamente no serviço da aplicação.
No cenário utilizando IIS, o certificado e o acesso HTTPS ficam sob responsabilidade do IIS, enquanto a aplicação permanece executando internamente em sua própria porta.
Essa arquitetura permite separar a infraestrutura de acesso externo da aplicação, facilitando o gerenciamento de certificados, domínios, HTTPS e regras de acesso.