A seção permite habilitar o TOTVS | Application Server para criptografar e autenticar as informações que são transmitidas pela internet, assim como outras operações de assinatura e certificação.
Ao configurar esta seção, as informações enviadas ou recebidas através de conexões socket são criptografadas/descriptografadas pelos pares conectados conforme as chaves e certificados especiais, que garantem que somente as partes autorizadas tenham acesso a comunicação.
Importante
- O TOTVS | Application Server utiliza certificados de seguranças no formato APACHE (.pem)
- Esta configuração é obrigatória para que o TOTVS | Application Server esteja habilitado a aceitar conexões remotas (seguras) e utilizar o protocolo de internet HTTPS - HyperText Transfer Protocol Secure.
Qualquer pacote TCP trafegado entre o servidor e o cliente estará criptografado, ou seja, não será possível o entendimento do pacote fora das partes. Além da codificação de dados, o SSL (Secure Sockets Layer) também efetua a autenticação da fonte de dados através da utilização do certificado e chave privada.
O certificado de segurança, emitido pelo provedor externo conhecido como Autoridade de Certificação (CA), tem por objetivo confirmar ao cliente (o par que inicia o processo de comunicação) que o Website é realmente administrado. Com isso, os possíveis ataques de hackers são evitados.
As chaves de configuração aqui apresentadas são utilizadas tanto na atuação do TOTVS | Application Server como servidor de informação quanto a funções que atuam com cliente de acesso a informações, por exemplo, HTTPSGet e HTTPSPost.
Dica
Há um estudo publicado no TDN que demonstra irregularidades encontradas na configuração SSL/TLS em versões anteriores a 13.1.3.26 e 13.2.3.26 e orienta o uso de boas práticas no procedimento de configuração: Conexões SSL/TLS.
A seguir, veja a documentação das chaves de configuração:
Chave | Descrição |
---|---|
SSL2 | Habilita a utilização da comunicação SSL2 na comunicação. |
SSL3 | Habilita a utilização da comunicação SSL3 na comunicação. |
TLS1 | (deprecated) Indica a utilização da comunicação com base no protocolo TLS1. |
TLS1_0 | Habilita a utilização do protocolo TLS1.0 na comunicação. |
TLS1_1 | Habilita a utilização do protocolo TLS1.1 na comunicação. |
TLS1_2 | Habilita a utilização do protocolo TLS1.2 na comunicação. |
DisableCipher | Conjunto de cifras que devem ser desabilitadas nas conexões SSL. A string deve especificar as cifras separadas pelo caractere ":". |
Verbose | Sinaliza o registro das mensagens de Debug em todas as operações ligadas ao uso de HSM (Hardware Security Module) e SSL (Secure Sockets Layer). |
Bugs | Sinaliza a utilização de "bug workaround" do OpenSSL. |
Debug | Sinaliza o registro dos pacotes de dados do handshaking SSL/TLS trafegados entre client/server. Dados associados a cifras e conteúdos de segurança não são expostos. |
State | Sinaliza o registro das mensagens de alteração de estados internos do handshaking SSL. |
CacheSize | Define o tamanho do cache interno da sessão de contexto SSL. |
CertificateServer | Path do arquivo do certificado digital do servidor para conexões SSL. O arquivo deve estar no formato PEM (modelo Apache). |
KeyServer | Path do arquivo com a chave privada correspondente ao certificado digital do servidor. O arquivo deve estar no formato PEM (modelo Apache). |
PassPhrase | Senha utilizada para a abertura da chave privada indicada por KeyServer. Caso a chave privada informada não necessite de senha uma string vazia deve ser informada. |
SecondCertificateServer | Path de um segundo arquivo de certificado digital do servidor para conexões SSL. O arquivo deve estar no formato PEM (modelo Apache). |
SecondKeyServer | Path do arquivo com a chave privada correspondente ao segundo certificado digital do servidor. O arquivo deve estar no formato PEM (modelo Apache). |
CertificateClient | Path do arquivo de um certificado digital utilizado quando a aplicação assume o papel client, ou seja, inicia uma conexão ou consome um serviço de um site https:// ou outro servidor. |
KeyClient | Path do arquivo com a chave privada que será utilizada pela aplicação quando assume o papel client. |
SecondCertificateClient | Path do arquivo de um segundo certificado digital utilizado quando a aplicação assume o papel client, ou seja, inicia uma conexão ou consome um serviço de um site https:// ou outro servidor. |
SecondKeyClient | Path do arquivo com a chave privada que correspondente ao segundo certificado digital utilizado pela aplicação quando assume o papel cliente. |
HSM | Sinaliza a comunicação e a operação de criptografia com o uso de HSM (Hardware Security Module). |
Module | Sinaliza o módulo Criptoki que será utilizado para acessar o HSM (Hardware Security Module). |
TryProtocols | (deprecated) Habilita a reconexão SSL utilizando outra versão de protocolo em caso de falha da conexão. |
Exemplo
[SSLConfigure] SSL2 = 0 SSL3 = 0 TLS1_0 = 0 TLS1_1 = 1 TLS1_2 = 1 Verbose = 0 Bugs = 0 State = 0 CacheSize = 32 CertificateServer = C:\cert\server-cert.pem KeyServer = C:\cert\server-key.pem PassPhrase = password CertificateClient = C:\cert\client-cert.pem KeyClient = C:\cert\client-key.pem Module = C:\Program Files\hsm\cryptoki.dll HSM = 0
Notas
Versões Contínuas de SSL/TLS
A habilitação de versões do protocolo SSL/TLS deve sempre compreender um range de grau de segurança contínuo, ou seja, não deve haver saltos na habilitação de versões. Por exemplo, se necessito realizar conexão a um servidor que aceite somente a versão SSL3 do protocolo e também conexão a outro servidor que necessite no mínimo a versão TLS1.1 do protocolo, devo configurar todas versões disponíveis entre a SSL3 e TLS1.2, como abaixo:
[SSLConfigure]
SSL2 = 0
SSL3 = 1
TLS1_0 = 1 ← tenho que habilitá-lo
TLS1_1 = 1
TLS1_2 = 1
A chave TLS1 está mantida em modo de compatibilidade. Isso significa que a atualização da aplicação irá funcionar adequadamente, porém, esta chave deve ser substituída pelas novas versões TLS1_0, TLS1_1 e TLS1_2. Caso quaisquer das novas chaves do protocolo TLS sejam encontradas no arquivo de configuração, a aplicação não reconhecerá as informações contidas na TLS1.
A chave TryProtocols não tem mais funcionalidade na aplicação. A chave deixou de indicar explicitamente a necessidade de retentativas de conexões utilizando as versões SSL/TLS habilitadas na configuração da aplicação, esse comportamento foi internalizado.
Esta implementação não envolve a classe WSDLManager, que contém implementação própria do protocolo, restringe-se ao uso do AppServer como servidor de conexão (WEBEX, HTTTPS) e as funções de acesso HTTPSGet, HTTPSPost.