Produto: | TOTVS Saúde Planos |
---|---|
Linha de Produto: | Linha Datasul |
Segmento: | Saúde |
Módulo: | HAT - Atendimento ao Cliente HAW - Autorizador Web |
Função: | Manutenção de Guias Solicitação de Exames Solicitação de Internação Consulta Beneficiários Intercambio |
País: | Brasil |
Ticket: | |
Issue: |
As implementações descritas neste documento correspondem as adequações efetuadas no TOTVS Saúde Planos - Linha Datasul para atender ao PTU Online 9.0.
Link para o comunicado completo
Conforme descrito no comunicado acima, à partir de 03/05/2023 a Unimed Brasil não aceitará mais protocolos inferiores a TLS 1.2.
A atual versão padrão do Java utilizada pelo Foundation Saúde (6u18 ou 6u45) somente tem suporte a TLS 1.0.
Portanto, para atender à nova necessidade, o Foundation Saúde precisará passar a utilizar uma versão customizada do Java 6, com suporte para TLS 1.2, disponibilizada neste documento.
Esta atualização não depende de aplicação de patch do Datasul. Apenas o Java deve ser atualizado. Portanto, pode/deve ser realizada a qualquer momento, o quanto antes. Recomenda-se atualizar no ambiente de protótipo, realizar as devidas validações e em seguida atualizar em Produção, sem a necessidade de esperar pela data de 03/05/2023, pois nesta data a Brasil apenas deixará de aceitar protocolos inferiores, mas desde já ela aceita o protocolo TLS 1.2. |
Baixe os pacotes de acordo com a versão do Java que você já utiliza (6u18 ou 6u45) e Sistema Operacional.
Obs: cada versão está separada em 4 arquivos. Basta baixar todos e descompactar o arquivo com extensão 001:
Descrição | Download (Linux) | Download (Windows) |
---|---|---|
Java 6u18 customizado para suportar TLS 1.2 | ||
Java 6u45 customizado para suportar TLS 1.2 | WIN-jdk1.6.0_45x64_TLS1.2.7z.001 WIN-jdk1.6.0_45x64_TLS1.2.7z.002 |
|
A solução descrita acima atendeu a maioria dos cenários de clientes onde já auxiliamos na atualização. Alguns cenários diferentes podem ser observados, de acordo com questões particulares do ambiente de cada cliente, como Firewall, Proxy Reverso, Certificados, demais configurações de segurança, etc. Caso o seu cenário apresente problemas, recomenda-se avaliar as soluções de contorno abaixo e/ou acionar consultoria. |
Se após atualizar o java do Foundation Saúde o seu ambiente apresentar mensagens semelhantes a estas, seja no envio (Unimed > Brasil) ou recebimento (Brasil > Unimed):
Pode ser necessário alterar estas configurações:
Caso a nova versão do Java com TLS 1.2 gere conflitos de comunicação nas mensagens de entrada (sentido Brasil > Unimed), ou se o cliente optar por isolar uma instância do Jboss para ficar dedicada apenas a recebimento e outra para envio de mensagens para a Brasil, as orientações abaixo podem ser utilizadas para criar uma nova instância apartada do Jboss.
Existem duas formas para a criação da nova instância do Foundation Saúde:
Resumo: será feita uma cópia completa do Jboss já existente. Em seguida alguns arquivos serão alterados na nova versão.
Após todas as configurações acima, por último é necessário modificar configuração da URL para a nova porta nos sistemas, onde no exemplo acima o http foi alterada de 28080 na instância antiga para 28090 na nova.
|
Esta é uma solução utilizando Proxy Reverso para as mensagens de saída (Unimed → Brasil), sem a necessidade de atualização da versão do Java 6 original. |
Resumo
Esta solução utiliza Nginx para o Proxy.
O caminho do arquivo de configuração pode variar de acordo com o ambiente. No exemplo temos um arquivo chamado ptu.conf dentro da pasta: /etc/nginx/conf.d/
Na Parte 1 temos um exemplo da configuração do Nginx.
Feita esta configuração pode-se testar acessando um endereço com o comando abaixo (ajustando a porta e o endereço conforme foi colocado no arquivo):
curl http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/comunicacaoInternacaoAlta
O retorno esperado é:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>No binding operation info while invoking unknown method with params unknown.</faultstring></soap:Fault></soap:Body></soap:Envelope>
Isto indica que está funcionando a “conversa” entre o proxy reverso e a Unimed Brasil, caso o retorno seja outro é necessário revisar a configuração.
Na Parte 2 temos um exemplo da alteração de configuração necessária para o Foundation Saúde utilizar o Proxy Reverso nas mensagens de saída.
Dentro da pasta conf do jboss do ptu temos o arquivo foundation-exchange.properties.
Nele é necessário alterar para que as requisições sejam feitas para o proxy reverso ao invés de enviar para a Unimed Brasil.
Após isto é necessário reiniciar o jboss, se o teste do curl funcionou, a configuração vai funcionar.
server {
#adicionar o IP do servidor onde está o nginx e a porta, exemplo 192.168.0.50
listen x.x.x.x:80;
#Adicionar o endereço que será usado para chegar até o ptu
server_name enderecoptu.unimed.com.br;
return 301 https://$server_name$request_uri;
}
server {
#Alterar pelo IP do jboss do PTU, caso ncessário alterar a porta de 443 para a que está sendo usada
listen x.x.x.x:443 ssl;
#Adicionar o endereço que será usado para chegar até o ptu
server_name enderecoptu.unimed.com.br;
proxy_ssl_server_name on;
#colocar aqui o caminho do arquivo certificado crt da unimed
ssl_certificate /certificado/certificado-unimed.crt;
#colocar aqui o caminho do arquivo da chave do certificado da unimed
ssl_certificate_key /opt/certificad-unimed.key;
#colocar aqui o certificado recebido da unimed brasil
ssl_client_certificate /opt/certificado-unimed-brasil.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_verify_client off;
ssl_prefer_server_ciphers on;
proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 128;
#caminho dos logs
error_log /var/log/nginx/ptu.error.log;
access_log /var/log/nginx/ptu.access.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host $http_host;
#colocar aqui o endereco IP HTTP do jboss do ptu, colocar a porta se necessário, exemplo: 192.168.0.50:8443
proxy_pass http://x.x.x.x;
}
location /htz-foundation {
#colocar aqui o certificado recebido da unimed brasil nos formatos do exemplo
proxy_ssl_certificate /opt/certificado-unimed-brasil.pem;
proxy_ssl_certificate_key /opt/certificado-unimed-brasil.key;
proxy_set_header X-SSL-CERT /opt/certificado-unimed-brasil.pem;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host $http_host;
proxy_ssl_verify off;
proxy_ssl_verify_depth 2;
#Adicionar o endereço https do jboss do ptu, colocar a porta se necessário, exemplo: 192.168.0.50:8443
proxy_pass https://x.x.x.x;
proxy_ssl_ciphers HIGH:!DH;
}
}
server {
#Porta que será em que este serviço será disponibilizado, a porta pode ser qualquer uma livre
listen localhost:9999;
#caminho dos logs
error_log /var/log/nginx/ptup-unimedcoop-error.log;
access_log /var/log/nginx/ptup-unimedcoop-access.log;
#Endereço da aplicação, neste caso é localhost porque o jboss esta no mesmo servidor do jboss
server_name localhost;
# Certificado do proxy (PTU -> Nginx)
ssl_certificate /opt/certificad-unimed.crt;
ssl_certificate_key /opt/certificad-unimed.key;
proxy_ssl_certificate /opt/certificado-unimed-brasil.pem;
proxy_ssl_certificate_key /opt/certificado-unimed-brasil.key;
# Protocolos aceitos pelo proxy (PTU -> Nginx)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
proxy_ssl_ciphers HIGH:!aNULL:!MD5;
#Aqui é forçado o envio usando TLS 1.2
proxy_ssl_protocols TLSv1.2;
proxy_ssl_verify_depth 2;
proxy_ssl_server_name on;
# Enviar as requisições recebidas para o Foundation
location / {
#Url da unimed do brasil de produção, protótipo é https://wsdapihml.unimed.coop.br;
proxy_pass https://wsdapi.unimed.coop.br;
}
}
Lembrar de alterar o endereço http://localhost:9999 pelo endereço que foi colocado na configuração do Nginx, destacado em vermelho na parte 1.
#Versao 9000 - PTU ONLINE 9.0 - ENDPOINT TLS 1.2
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.RespostaAuditoria.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/RespostaAuditoria
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.PedidoAutorizacao.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/PedidoAutorizacao
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.PedidoComplementoAutorizacao.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/PedidoComplementoAutorizacao
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.OrdemServico.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/OrdemServico
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.ConsultaDadosPrestador.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/ConsultaDadosPrestador
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.Cancelamento.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/Cancelamento
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.PedidoInsistencia.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/PedidoInsistencia
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.ConsultaDadosBeneficiario.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/ConsultaDadosBeneficiario
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.RequisicaoContagemBeneficiarios.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/RequisicaoContagemBeneficiarios
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.StatusTransacao.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/StatusTransacao
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.comunicacaoDecursoPrazo.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/ComunicacaoDecursoPrazo
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.autorizacaoOrdemServico.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/AutorizacaoOrdemServico
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.ConsultaA1100.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/ConsultaA1100
com.totvs.foundation.exchange.connector.ptu.implementation.v9000.DefaultExternalConnector.comunicacaoInternacaoAlta.ENDPOINT = http://localhost:9999/wsdintercambio/intercambioservices/ptu_V90_00/comunicacaoInternacaoAlta
Em 20/04/2023 realizamos um Webinar para todos os clientes, para esclarecimentos sobre o assunto.
A gravação está neste link:
Senha: 9SJCff0$