...
- Durante a configuração do dessa tag em seu 'appserver.ini' observe as validações do seu certificado e quais são os níveis de criptografia que permite a utilização.
- Após estar tudo funcionando é indicado desabilitar o 'verbose' para evitar a atualização/gravação de mensagens informativas em seu 'console.log' o que afeta bastante pode afetar a performance do server.
- Informe seu certificado e chave privada do seu certificado de acordo com as informações abaixo e também detalhadas no caso de uso do tópico anterior.
- É importante habilitar também as palavras reservadas 'SSL' , pois sem estarem habilitadas as APIs REST não responderão, pois o modelo de criptografia utilizada será automaticamente definida entre browsers e server baseado no certificado utilizado e nas versões de browsers do cliente, também não podem existir gaps entre os modelos de criptografia, por exemplo, não é permitido pular o modelo, colocando SSL2=1 ; SSL3=0; TLS1=1.
- As tags corretas para declaração dos arquivos de certificados para essa chave são "Certificate" e "key".
- Não deixe de informar a 'PassPhrase', ou palavra/frase passe, pois ela é sua segurança para inibir acesso as informações de seu certificado utilizando função da Tech, como por exemplo a função PEMInfo()
[SSLConfigure]
Enable=1
SSL2=1
SSL3=1
TLS1=1
TLS1_0=1
TLS1_1=1
TLS1_2=1
verbose=0
CertificateServerCertificate=c:\totvs\certificate.crt
KeyServerKey=c:\totvs\private.key
PassPhrase=meurhpwd
...
- Inicialmente é importante ressaltar que problemas encontrados no certificado, como por exemplo, carregar em ambiente 'não seguro', poderá não funcionar o processo de login no aplicativo pelo celular, visto existem restrições de segurança de cada sistema operacional mobile, mesmo que o funcionamento ocorra normalmente pelo browser, onde nesse caso temos a possibilidade de permitir manualmente a habilitação do carregamento para URLs não seguras.
- Provavelmente o seu serviço de APIs REST estará instalado em um servidor que responda a um IP Externo, consequentemente não faz sentido subir uma porta do REST que não possua o seu certificado SSL:
- Caso deseje configurar uma API apenas com HTTP indicamos subir e utilizar um appserver apenas em um servidor físico em sua rede local.
- Ao utilizar o SSL verifique as características do seu certificado baseado nas informações dos tópicos anteriores.
- A palavra 'URL' dentro da tag [HTTPENV] deverá possuir inicialmente a palavra 'rest'o conteúdo "/rest", pois é obrigatória para a utilização da arquitetura do App MeuRH, principalmente quando utilizada pelo celular:
- Após a palavra 'rest' você poderá possuir "/rest" você poderá informar quaisquer nomes para compor a sua URL de APIs, em nosso caso de uso nossa URL ficaria como por exemplo: https://104.210.222.191:8107/restT1
- Entretanto, por nosso certificado criado não estar habilitado para esse IP público estaremos utilizando o serviço REST sem ssl para esse ambiente de teste, respondendo apenas em http://104.210.222.191:8107/rest
- Sendo assim, apenas foi retirado as informações referente ao certificado da tag [HTTPREST].
- Referente a seção [RESTCONFIG], ela é criada exclusivamente para utilização da arquitetura do App MeuRH:
- A palavra 'restPort' é utilizada pelos serviços de backend por isso a obrigatoriedade do seu preenchimento, sendo assim, apesar do protheus em seu appserver permitir que se possa instanciar várias portas REST, em virtude da arquitetura do meurh esse contexto não é permitido.
- Em relação a palavra reservada 'MeuRHLog' ela auxilia no processo de login e manutenção para identificar possíveis dificuldades no processo de configuração e divergências de login, posteriormente, também pode ser desligada utilizando o valor '0' para melhorar a performance de resposta do aplicativo.
- Não deixe de confirmar se a porta do serviço REST utilizada está liberada em seu firewall para permitir receber as requisições.
- As tags corretas para declaração dos arquivos de certificados dentro do serviço REST são "CertificateServer" e "keyServer".
- Por questões de compatibilidade do protocolo de criptografia não deixe de informar essa tag "TLS1=3" no seu serviço REST.
- Não deixe também de habilitar o item 'SECURITY', pois ele é responsável em exigir as autenticações para a utilização das API´s, caso não estejam ligados o server responderá qualquer requisição recebida sem validação.
...
[HTTPREST]
Port=8107
SECURITY=1
URIs=HTTPENV
SSL2=1
SSL3=1
TLS1=13
TLS1_0=1
TLS1_1=1
TLS1_2=1
verbose=0
CertificateServer=c:\totvs\certificate.crt
KeyServer=c:\totvs\private.key
PassPhrase=meurhpwd
...
03. Sobre Configuração da Seção HTTP & HTTPs
Em relação as configurações de hosts HTTP no seu 'appserver.ini', essas informações abaixo são importantes e complementares ao processo de instalação:
- É obrigatório a informação da tag mesmo que você deseje utilizar apenas utilizar o serviço HTTPs, entretanto, você desabilitar com 'enable=0' para que nenhuma requisição seja respondida por qualquer host configurado. .
- As tags corretas para declaração dos arquivos de certificados no HTTPs são "Certificate" e "key".
- É importante configurar adequadamente a tag "PATH" ela é responsável de restringir que o serviço HTTP possa permitir acesso a outras pastas que estejam fora do caminho informado, no exemplo abaixo, apenas as sub-pastas de \web estarão acessíveis.
- Por padrão web e também do server protheus é importante relembrar que por padrão utilizando o protocolo HTTP a porta padrão é 80, enquanto utilizando HTTPs a porta padrão é 443.
- A utilização de portas diferentes irá obriga-lo a configura-las nos hosts/urls, veja no próximo tópico.
- Lembre-se de liberar as portas utilizadas em seus serviços de firewall em seu servidor.
- Procure utilizar a palavra reservada 'compression', essa funcionalidade realiza automaticamente no server uma compressão gzip nos arquivos que serão enviados e os browsers já fazem essa descompactação do arquivos, assim os processos de transferência/download e inicialização ficam mais rápidos.
- Caso realizem alguma configuração para esconder URLs quando a utilização ocorrer via browsers através de iframe é necessário configurar e informar a palavra reservada 'xFrameOptions'.
[HTTP]
ENABLE=0
PATH=C:\Protheus_12127\Protheus_data\web
PORT=80
ENVIRONMENT=12.1.27
XFrameOptions = ALLOW-FROM http://meurh.world
Compression=1
...