Tempo aproximado para leitura: 00:15:00 min
Dúvida
Como habilitar o uso de SSL no Host do sistema RM?
Ambiente
Framework - Linha RM - Frame - Todas as versões do sistema RM
Solução
Para se realizar a configuração do certificado SSL, é preciso obter um certificado digital válido, adquirido através de uma autoridade certificadora (AC). Estes são facilmente encontradas na web, mas também é possível gerar certificados digitais auto assinados, para os testes.
É recomendável que a AC escolhida para gerar o certificado já esteja no diretório de autoridades confiáveis raiz, do gerenciamento de certificados do computador, pois desta forma não será necessário importar a AC em todas as máquinas clientes.
Orientamos que realize o procedimento utilizando o certificado adquirido. Caso deseje realizar os testes com o certificado auto assinado da Totvs, segue este abaixo para download:
Certificado Auto Assinado TOTVS
1. A seguir estão os passos para Instalar o Certificado SSL/TLS no Servidor:
Com o certificado ja em um diretório, o execute para iniciar o processo de importação:
Em local de Repositório selecione: Máquina Local
Na especificação do arquivo do certificado, deixe definido o certificado ao qual esta utilizando.
Informe a chave de segurança que seu certificado possui e prossiga com a importação.
No repositório do certificado, marque a opção para Colocar todos os certificados no repositório a seguir e selecione o repositório Pessoal.
Avance o processo de importação ate sua conclusão.
2. Abra o gerenciamento de certificados do computador (certlm.msc) como administrador e dê permissão para o usuário do Host nas chaves privadas do certificado:
Atribua as permissões ao usuário do "Serviço de rede", "SERVIÇO DE REDE" ou "NETWORKSERVICE", para que o serviço de Host possa acessar corretamente o certificado.
3. Abra o Certificado e copie a Impressão Digital (Thumbprint) e o armazene para uma futura configuração:
Em seguida, gere um GUID através do site https://www.guidgenerator.com/online-guid-generator.aspx e também o armazene para ser utilizado nos próximos passos.
4. Abra o gerenciamento de certificados do computador (certlm.msc) novamente e Copie o Certificado ao qual importou, para o diretório Pessoal.
Em seguida, Cole este Certificado no diretório Autoridade de Certificação Raiz Confiáveis:
Assim o Certificado será também inserido ao diretório de Certificados dentro de Autoridade de Certificação Raiz Confiáveis.
5. A seguir estão os passos para registrar o Certificado na porta utilizada pelos serviços HTTP: WebService e WebAPI do HOST:
Esta configuração é necessária apenas para aqueles que forem habilitar a segurança para os serviços HTTP (WebService e WebAPI).
- Por padrão o RM utiliza a porta 8050 para TCP, 8051 para WebService (HttpPort) e 8052 para WebAPI (ApiPort), mas isso pode ser configurado.
Veja mais sobre a configuração de portas Clicando Aqui.
Caso a sua Porta já esteja reservada e em uso para outra Url ou Certificado, será apresentado erro no momento da reserva.
É necessário remover este registro, para que a nova inclusão seja realizada corretamente. Utilize o seguinte comando:
- netsh http delete urlacl url=URL
- netsh http delete sslcert ipport=0.0.0.0:Porta
Segue como Exemplo:
- netsh http delete urlacl url=https://+:8050/
-
netsh http delete sslcert ipport=0.0.0.0:8050
- netsh http delete urlacl url=https://+:8051/
-
netsh http delete sslcert ipport=0.0.0.0:8051
- netsh http delete urlacl url=https://+:8052/
- netsh http delete sslcert ipport=0.0.0.0:8052
É possível verificar se as Portas ja estão reservadas com os seguintes comandos abaixo, assim podendo verificar e prosseguir para os passos seguintes, para reservar e registrar corretamente a porta.
- netsh http show urlacl
- netsh http show sslcert
6. Neste procedimento será preciso reservar e registrar o certificado nas portas de uso dos serviços.
Nos passos acima( Passo 3) foram copiados o Thumbprint e o GUID.
A sintaxe para aplicar as alterações deve seguir o modelo abaixo de acordo com as configurações do seu ambiente.
- netsh http add sslcert ipport=0.0.0.0:PORTA certhash=THUMBPRINT appid={GUID}
- netsh http add urlacl url=https://+:PORTA/ user="DOMINIO\USUARIO"
Maiores detalhes podem ser obtidos diretamente na documentação da Microsoft disponível no link:
https://msdn.microsoft.com/en-us/library/windows/desktop/cc307236(v=vs.85).aspx
Abra o CMD como Administrador e aplique os comandos alterando os campos do Thumbprint e GUID pelos que foram copiados de seu ambiente. Aplicando em todas as portas que deseja utilizar.
Segue como Exemplo:
- netsh http add sslcert ipport=0.0.0.0:8050 certhash=b4def01ef76a1ff154faef805e6eafce3d411459 appid={30f71a3a-a01c-44d6-820f-f114ac69edff}
- netsh http add sslcert ipport=0.0.0.0:8051 certhash=b4def01ef76a1ff154faef805e6eafce3d411459 appid={30f71a3a-a01c-44d6-820f-f114ac69edff}
- netsh http add sslcert ipport=0.0.0.0:8052 certhash=b4def01ef76a1ff154faef805e6eafce3d411459 appid={30f71a3a-a01c-44d6-820f-f114ac69edff}
- netsh http add urlacl url=https://+:8050/ user="NT AUTHORITY\NETWORKSERVICE"
- netsh http add urlacl url=https://+:8051/ user="NT AUTHORITY\NETWORKSERVICE"
- netsh http add urlacl url=https://+:8052/ user="NT AUTHORITY\NETWORKSERVICE"
Ao finalizar será exibida ao final de cada comando, o correto cadastramento do certificado e reserva da Porta.
Caso o ambiente possua mais hosts de acesso deverá habilitar o recurso em todos os serviços:
7. Configuração do RM, quanto a aplicação do SSL/TLS no Host:
Para proteger apenas os serviços HTTP, ou seja, os Web Services e serviços REST expostos pelo HOST, basta habilitar o parâmetro abaixo no arquivo de configuração (RM.Host.Service.exe.config, RM.Host.exe.config e demais configs do RM.Host.Service caso possua mais Hosts).
- <add key="EnableWSSecurity" value="true" />
Exemplo: RM.Host.Service.exe.config
8. Os parâmetros abaixo, devem ser ajustados de acordo com a instalação do certificado, para que o mesmo seja encontrado pelo RM.
Este parâmetro deve ser preenchido nos arquivo de configuração (RM.exe.config, Web.config dos Portais, RM.Host.Service.exe.config, RM.Host.exe.config e demais configs do RM.Host.Service, caso possua mais hosts) do Servidor e das maquinas Cliente.
-
<add key="EnableSecurity" value="true" />
A partir da versão 12.1.34, NÃO é mais necessário inserir a tag EnableSecurity nos arquivos de configuração da camada cliente do sistema.
Sendo necessário apenas adicionar no Servidor, nos arquivos de RM.Host.Service.exe.config.
Exemplo: Arquivos RM.exe.config (RM.exe), Web.config(Portais), RM.Lib.Gerador.Execute.exe.config etc.
Para mais informações acesse o TDN EnableSecurity.
As tags do certificado devem ser preenchidas nos arquivos de RM.Host.Service.exe.config, conforme o Certificado que utiliza no ambiente.
Segue abaixo as tags de configuração do Certificado:
CERTIFICATESTORELOCATION:
Local do Store é onde está armazenado o certificado.
- Valores possíveis: CurrentUser, LocalMachine
- Valor padrão: LocalMachine
Exemplo: <add key="CERTIFICATESTORELOCATION" value="LocalMachine" />
Maiores detalhes podem ser obtidos diretamente na documentação da Microsoft disponível no link:
https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.storelocation?view=netframework-4.7.2
CERTIFICATESTORENAME:
Store onde está armazenado o certificado.
- Valores possíveis: AddressBook, AuthRoot, CertificateAuthority, Disallowed, My, Root, TrustedPeople, TrustedPublisher
- Valor padrão: My
Exemplo: <add key="CERTIFICATESTORENAME" value="My" />
Maiores detalhes podem ser obtidos diretamente na documentação da Microsoft disponível no link:
https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.storename?redirectedfrom=MSDN&view=netframework-4.7.2
CERTIFICATEFINDTYPE:
Campo do certificado que será utilizado para realizar a pesquisa.
- Valores possíveis: FindByThumbprint, FindBySubjectName, FindBySubjectDistinguishedName, FindByIssuerName, FindByIssuerDistinguishedName, FindBySerialNumber, FindByTimeValid, FindByTimeNotYetValid, FindByTimeExpired, FindByTemplateName, FindByTemplateName, FindByApplicationPolicy, FindByCertificatePolicy, FindByExtension, FindByKeyUsage, FindBySubjectKeyIdentifier
- Valor padrão: FindBySubjectName
Exemplo: <add key="CERTIFICATEFINDTYPE" value="FindBySubjectName" />
Maiores detalhes podem ser obtidos diretamente na documentação da Microsoft disponível no link:
https://docs.microsoft.com/pt-br/dotnet/api/system.security.cryptography.x509certificates.x509findtype?view=netframework-4.7.2
CERTIFICATEFINDVALUE:
Campo do certificado que será utilizado para realizar a pesquisa.
- Valores possíveis: Qualquer texto sem caracteres especiais
- Valor padrão: TOTVS
Exemplo: <add key="CERTIFICATEFINDVALUE" value="TOTVS" />
9. Ao finalizar as configurações, Reinicie os Serviços de Host.
Framework - Linha RM - Frame - Reiniciar Host
10. Realizando as validações da configuração:
Após subir o serviço de Host do RM será possível acessar a pagina do wsdl de algum serviço disponível e assim validamos a configuração realizada.
Como exemplo, acesse a URL abaixo e valide se a pagina será exibida corretamente:
https://localhost:8051/wsdataserver/MEX?wsdl
Saiba mais
Para mais informações para Habilitar o SSL/TLS no Host, consulte o artigo abaixo:
Habilitar SSL/TLS no Host
Para mais informações sobre como configurar SSL para o RM Portal, consulte o artigo abaixo:
Framework - Linha RM - Frame - Geração e configuração de certificado SSL RM Portal
0 Comentários