Tempo aproximado para leitura: 00:08:00 min
Dúvida
Como configurar o TOTVS Smart View para acesso externo através de HTTPS utilizando o Apache HTTP Server como proxy reverso, mantendo o serviço do Smart View disponível internamente através de HTTP?
Ambiente
Framework - Framework (Linha Datasul) - Smart View (SVW) - Versão 12
Solução
Para disponibilizar o Smart View externamente utilizando HTTPS, pode ser configurado um VirtualHost exclusivo no Apache, responsável por receber as requisições HTTPS e encaminhá-las para a porta interna do Smart View.
Exemplo da arquitetura:
Usuário / Navegador
|
| HTTPS :443
v
https://smartview.empresa.com.br
|
| Apache Reverse Proxy
v
http://servidor-smartview:7017
|
v
TOTVS Smart View
|
| HTTPS
v
TOTVS DatasulA configuração deve ser adaptada de acordo com os endereços, certificados e portas utilizados no ambiente.
1. Configurar o DNS e o certificado HTTPS
Crie um endereço DNS para acesso externo ao Smart View. Exemplo:
smartview.empresa.com.brO certificado configurado no Apache deverá ser válido para o hostname utilizado. Exemplo:
https://smartview.empresa.com.brValide também se a cadeia certificadora apresentada pelo servidor está completa.
2. Criar o VirtualHost do Smart View no Apache
No arquivo de configuração do Apache, adicione um VirtualHost exclusivo para o Smart View. Exemplo:
<VirtualHost *:443>
ServerName smartview.empresa.com.br
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/smartview.empresa.com.br.crt
SSLCertificateKeyFile /etc/httpd/ssl/smartview.empresa.com.br.key
ProxyRequests Off
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Host "smartview.empresa.com.br"
ProxyPass / http://servidor-smartview:7017/
ProxyPassReverse / http://servidor-smartview:7017/
ErrorLog logs/smartview_error.log
CustomLog logs/smartview_access.log combined
</VirtualHost>O ProxyPass encaminha as requisições recebidas pelo Apache para o serviço interno do Smart View. O ProxyPassReverse permite ao Apache tratar os redirects retornados pelo backend, evitando que o navegador passe a utilizar diretamente o hostname ou a porta interna do Smart View.
O parâmetro: ProxyPreserveHost On mantém o header Host original recebido pelo Apache. Dessa forma, o Smart View continua recebendo como referência o endereço público:
smartview.empresa.com.brEm vez de utilizar somente o endereço interno configurado no ProxyPass. Não é necessário alterar globalmente essa propriedade em outros VirtualHost existentes no Apache. Os headers abaixo também devem ser configurados:
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Host "smartview.empresa.com.br"Eles permitem informar ao backend que a requisição original foi realizada utilizando HTTPS, porta 443 e o hostname público do Smart View, mesmo que a comunicação entre o Apache e o Smart View seja realizada internamente através de HTTP.
3. Validar a configuração do Apache
Antes de reiniciar o serviço, valide a sintaxe da configuração. Em ambientes Linux, utilize conforme a instalação:
apachectl configtestou:
httpd -tO resultado esperado é:
Syntax OKValide também se estão carregados os módulos necessários, principalmente:
mod_ssl
mod_proxy
mod_proxy_http
mod_headersExemplo:
apachectl -M | egrep 'ssl|proxy|proxy_http|headers'Após a validação, reinicie ou efetue o reload do Apache conforme o procedimento utilizado no ambiente.
4. Configurar a URL externa do Smart View no Datasul
No Datasul, acesse Propriedades do Sistema, Propriedades Integrações TOTVS, Smart View. Informe no campo de URL do Smart View o endereço público configurado no Apache. Exemplo:
https://smartview.empresa.com.brQuando o acesso ao Smart View deve ocorrer através do endereço externo, não utilize nesse campo o endereço interno:
http://servidor-smartview:7017O objetivo é que o Datasul abra os relatórios utilizando o endereço externo publicado pelo proxy.
5. Validar o endereço utilizado pelo Smart View para comunicação com o Datasul
Além do Datasul acessar o Smart View, o Smart View também precisa se comunicar com o ERP para autenticação e consulta dos dados utilizados nos relatórios.
Valide o endpoint de descoberta configurado para o Datasul. Exemplo:
https://datasul.empresa.com.br/totvs-login/sv/.well-knownValide também o Conector do tipo Provedor Nativo configurado no Smart View. Exemplo:
https://datasul.empresa.com.br/api/trep/v1/provider/.well-known/treports/connector/Quando o Datasul também estiver publicado externamente através de proxy ou balanceador, utilize o endereço compatível com essa publicação e com as demais configurações utilizadas na integração.
6. Validar a configuração JWT do Datasul
Caso o Datasul esteja publicado externamente através de outro hostname, proxy ou balanceador, valide também as propriedades JWT utilizadas na integração. No Datasul, acesse Propriedades do Sistema, Propriedades JWT, Datasul. O endereço utilizado pelo Smart View para comunicação com o Datasul deve estar coerente com a audiência utilizada pelo token JWT.
Valide principalmente os campos de identificação do servidor disponíveis na versão utilizada. Após realizar alterações nas propriedades relacionadas ao JWT, efetue um novo login no Datasul antes de repetir o teste.
Logout do Datasul
↓
Novo login
↓
Novo teste do relatórioDessa forma, um novo token será gerado utilizando as propriedades atualizadas.
7. Validar a confiança dos certificados
A utilização de HTTPS deve ser validada em todas as comunicações existentes no cenário.
Exemplo:
Navegador
↓
Apache / Smart View
Smart View
↓
Datasul
OpenEdge / Datasul
↓
Smart ViewO fato de o certificado ser reconhecido pelo navegador não garante que ele também seja confiável para Java, OpenEdge ou outros runtimes utilizados pela integração. Quando existirem chamadas HTTPS originadas pelo OpenEdge, valide se a cadeia certificadora necessária está disponível no repositório de certificados utilizado pela respectiva instalação do Progress OpenEdge.
Quando a chamada HTTPS for originada por um componente Java, valide o truststore utilizado pela JVM correspondente. Não desabilite a validação SSL/TLS como solução definitiva para problemas relacionados a certificado.
8. Validar o funcionamento
Após concluir a configuração, acesse diretamente:
https://smartview.empresa.com.brConfirme que o endereço permanece utilizando HTTPS e que não ocorre redirecionamento para hostname ou porta interna. Em seguida, acesse um relatório Smart View através do Datasul.
A nova guia deverá utilizar:
https://smartview.empresa.com.br/...
e não:
http://servidor-smartview:7017/...Execute também um relatório que consulte informações do ERP e confirme que os dados são retornados corretamente. Quando aplicável, realize a geração do relatório em PDF e valide se o arquivo é criado corretamente e possui conteúdo.
Importante
Antes de alterar a configuração do Apache, realize backup do arquivo de configuração atual. Recomenda-se criar um VirtualHost específico para o Smart View, evitando alterações desnecessárias em publicações já existentes no mesmo Apache. Não exponha diretamente a porta interna do Smart View para acesso externo quando ela puder permanecer protegida pela rede interna. Mantenha:
ProxyRequests OffPara não habilitar o Apache como forward proxy. Não altere globalmente:
ProxyPreserveHostCaso existam outros Sistemas utilizando o mesmo servidor Apache. A configuração apresentada neste documento deve permanecer restrita ao VirtualHost destinado ao Smart View. Antes de reiniciar o Apache, sempre valide a configuração:
apachectl configtestou:
httpd -tCaso seja identificado erro de sintaxe, corrija a configuração ou restaure o arquivo anterior antes de reiniciar o serviço.
0 Comentários