Versões comparadas
Chave
- Esta linha foi adicionada.
- Esta linha foi removida.
- A formatação mudou.
Índice:
Índice | ||
---|---|---|
|
Objetivo:
Este documento tem como objetivo auxiliar o usuário na configuração do ambiente RM, para que a comunicação com os serviços HTTP seja protegida com SSL/TLS e a comunicação do RM.exe com o Host através de certificado digital.
Instalação do Certificado no Servidor:
Um certificado digital pode ser adquirido através de uma autoridade certificadora (AC), são facilmente encontradas na web, mas também é possível gerar certificados digitais auto assinados.
Existem várias maneiras de se gerar um certificado digital auto assinado. Abaixo alguns links para ajuda e, em anexo, um certificado auto assinado que pode ser utilizado para cifrar a comunicação, lembrando que o recomendado é que seja adquirido um através de uma AC.
Aviso | ||||
---|---|---|---|---|
| ||||
É 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. |
Salve o certificado no servidor e instale-o conforme imagens abaixo:
Informações | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||
|
Registrando o Certificado na Porta Utilizada Pelos Serviços HTTP: WebService e WebAPI do HOST:
Aviso | ||||
---|---|---|---|---|
| ||||
Configuração necessária apenas para aqueles que forem habilitar segurança para os serviços HTTP (WebService e WebAPI). |
Aviso | ||||
---|---|---|---|---|
| ||||
Caso a sua Porta já esteja reservada para outra Url, é necessário desfazer este registro. Use o seguinte comando:
Ex.: netsh http delete urlacl url=http://+:<PORTA>/ |
Aviso | ||||
---|---|---|---|---|
| ||||
O usuário do IIS e do Host precisa ter acesso ao arquivo de configuração global. |
Passo a Passo:
- Utilizando o thumbprint copiado e o GUID, registre o certificado nas portas HTTP utilizadas pelo HOST. Por padrão o RM utiliza as portas 8050 para TCP e 8051 para WebService (HttpPort) e WebAPI (ApiPort), mas isso pode ser configurado. Veja mais sobre a configuração de portas aqui.
- Importante: caso as portas HttpPort e ApiPort sejam diferentes, é necessário executar os comandos abaixo para ambas as portas.
- Abra o prompt de comando do Windows como administrador.
- Segue abaixo os comandos para registrar o certificado nas portas, e os dois exemplos reais.
Exemplos:
Informações | ||
---|---|---|
| ||
A sintaxe para aplicar as alterações deve seguir o modelo abaixo de acordo com as configurações do seu ambiente.
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 |
- netsh http add sslcert ipport=0.0.0.0:8051 certhash=b4def01ef76a1ff154faef805e6eafce3d411459 appid={df85028c-5054-44f8-9d01-5a07ddc0f7c0}
- netsh http add urlacl url=https://+:8051/ user="NT AUTHORITY\NETWORKSERVICE"
Informações | ||
---|---|---|
| ||
Para remover as regras aplicadas utilize os comandos com a sintaxe delete conforme exemplos abaixo.
|
Configurando o RM:
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 do HOST (RM.Host.Service.exe.config/RM.Host.exe.config)
- <add key="EnableWSSecurity" value="true" />
Para proteger a comunicação entre o RM.exe e o HOST será necessário habilitar o parâmetro abaixo nos arquivos de configuração do RM.exe (RM.exe.config) e do HOST (RM.Host.Service.exe.config/RM.Host.exe.config)
- <add key="EnableSecurity" value="true" />
Os parâmetros abaixo, do arquivo de configuração do HOST (RM.Host.Service.exe.config), devem ser ajustados de acordo com o a instalação do certificado para que o mesmo seja encontrado pelo RM.
- <add key="EnableSecurity" value="true" /> TDN
Para proteger a comunicação entre as camadas Cliente e Servidor é necessário habilitar o parâmetro EnableSecurity nos arquivos de configuração em ambas as das camadas Cliente e Servidor. Para mais informações acesse o TDN EnableSecurity.
Aviso | ||
---|---|---|
| ||
A partir da versão 12.1.34 não é necessário inserir a tag EnableSecurity nos arquivos de configuração da camada cliente do sistema. Como por exemplo os arquivos RM.exe.config (RM.exe), Web.config(Portais), RM.Lib.Gerador.Execute.exe.config e ETC. |
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" />
Aviso | ||||
---|---|---|---|---|
| ||||
É necessário informar o nome do certificado do lado client, (RM.exe.Config) na propriedade "CERTIFICATEFINDVALUE" |
Validando as Configurações:
Após subir o serviço de Host do RM pode-se verificar se existe uma resposta para o wsdl de algum serviço disponível e assim validamos a toda a configuração realizada.
Como exemplo, acessamos a URL https://localhost:8051/wsdataserver/MEX?wsdl e obtemos sucesso na resposta conforme abaixo.
Informações | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|
Informações | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
|