Saltar para o conteúdo principal
Versão: v20

Protocolo TLS (HTTPS)

Todos os servidores 4D podem se comunicar em modo seguro através do protocolo TLS (Transport Layer Security):

  • o servidor web
  • o servidor de aplicação (aplicações desktop cliente-servidor)
  • o servidor SQL

Visão Geral

O protocolo TLS (sucessor de SSL) foi criado para assegurar trocas de dados entre duas aplicações - principalmente entre servidor web e um navegador. Esse protocolo é amplamente usado e é compatível com a maioria dos navegadores.

No nível de rede, o protocolo de segurança é inserido entre a capa TCP/IP (baixo nível) e o protocolo de alto nível HTTP. Foi criado principalmente para trabalhar com HTTP.

Configuração de rede usando TSL:

O protocolo TLS foi criado para autenticar o emissor e o recipiente e assim garantir a confidencialidade e integridade da troca de informações:

  • Autenticação: As identidades do emissor e do receptor são confirmadas.
  • Confidencialidade: O dado enviado é criptografado para que um terceiro não possa entender a mensagem.
  • Integridade: Os dados recebidos não foram modificados, seja por acidente ou com má intenção.

TLS usa uma técnica de criptografia de chave pública baseado em duas chaves assimétricas para criptografia e descriptografia: uma chave pública e outra privada. A chave privada é usada para criptografar os dados. O emissor (o website) não dá essa chave para ninguém. A chave pública é usada para decriptografar a informação e enviá-la para os recipientes (navegadores web) através de um certificado. Quando usar TLS com a Internet, o certificado é entregue através de uma autoridade de certificação, como Verisign®. O website paga a Autoridade de Certificação para entregar um certificado que garante a autenticação do servidor e contém a chave pública que permite a troca de dados em um modo seguro.

Para saber mais sobre o método de criptografia e chaves privadas e públicas, veja a descrição do comando ENCRYPT BLOB.

Versão mínima

Como padrão, a versão mínima de um protocolo de segurança aceito pelo servidor é TLS 1.2. Pode modificar esse valor usando o seletor Min TLS version com o comando SET DATABASE PARAMETER.

Pode controlar o nível de segurança de seu servidor web definindo a versão TLS mínima aceita para conexões.

Como obter o certificado?

Um servidor trabalhando em modo seguro significa que precisa de um certificado digital de uma autoridade de certificações. Esse certificado contém várias informações tais como a ID do site assim como a chave pública usada para comunicar com o servidor. Esse certificado é transmitido aos clientes (por exemplo os navegadores Web) conectando a esse servidor. Quando o certificado tiver sido identificado e aceito, a comunicação é feita em modo seguro.

Navegadores web autorizam apenas os certificados emitidos por autoridades de certificação referenciados em suas propriedades.

A autoridade de certificação é escolhida de acordo com vários critérios. Se a autoridade de certificação for bem reconhecida, o certificado será autorizado por vários navegadores, mas o preço pode ser caro.

Para obter um certificado digital:

  1. Crie uma chave privada usando o comando GENERATE ENCRYPTION KEYPAIR.
caution

Por motivos de segurança, a chave privada deve ser sempre mantida em segredo. Na verdade deve ser mantida sempre na máquina servidor. Para o servidor web, o arquivo Key.pem deve ser localizado na pasta Project.

  1. Use o comando GENERATE CERTIFICATE REQUEST para emitir uma petição de certificado.

  2. Envie a petição de certificado à autoridade de certificação escolhida. Para preencher uma petição de certificado, pode ser necessário entrar em contato com a autoridade de certificação. A autoridade checa que a informação transmitida seja correta. A petição de certificado é gerada em um BLOB usando o formato PKCS codificado em base64 (formato PEM). Esse princípio permite que copie e cole as chaves como texto e as envie via E-mail sem modificar o conteúdo da chave. Por exemplo pode salvar o BLOB que contém a petição de certificado em um documento texto (usando o comando BLOB TO DOCUMENT), e então abrir e copiar e colar seu conteúdo em um mail ou um formulário web a ser enviado para a autoridade de certificação.

  3. Quando tiver o certificado, crie um arquivo texto chamado "cert.pem" e cole seu conteúdo do certificado dentro dele. Pode receber um certificado de várias maneiras (geralmente por email ou formulário HTML). 4D aceita todos os formatos de texto relacionados à plataformas para certificados (OS X, PC, Linux, etc). Entretanto o certificado deve ser no formato PEM, ou seja, PKCS codificado em base64.

    Caracteres CR final de linha não são compatíveis em si; deve usar ou CRLF ou LF.

  4. Coloque o arquivo “cert.pem” no local apropriado.

O servidor 4D pode trabalhar em modo seguro. Um certificado é válido de 3 meses a um ano.

Instalação e ativação

Arquivos key.pem e cert.pem

A instalação de arquivos key.pem e cert.pem torna possível usar TLS com o servidor 4D. Entretanto para que as conexões TLS sejam aceitas pelo servidor, precisa ativá-las:

caution

Arquivos padrão key.pem e cert.pem são oferecidos com 4D. Para um maior nível de segurança, recomendamos fortemente que esses arquivos sejam substituídos por seus próprios certificados.

Com o servidor web

Para poder usar o protocolo TLS com o servidor, deve instalar key.pem (documento que contém a chave de criptografia privada) e cert.pem (documento que contém o certificado) no local apropriado:

  • com 4D em modo local em Servidor 4D, esses arquivos devem ser colocados ao lado da pasta projeto
  • com 4D em modo remoto, esses arquivos devem estar na pasta de banco de dados cliente na máquina remota (para saber mais sobre a localização dessa pasta, veja o comando Get 4D folder).

Deve copiar esses arquivos manualmente na máquina remota.

Com o servidor de aplicações (aplicações de desktop cliente-servidor)

Para ser usado pelo servidor da aplicação 4D, os arquivos key.pem e cert.pem devem ser colocados na pasta Resources da aplicação 4D Server.

Com o servidor SQL

Para serem utilizados pelo servidor SQL 4D, os ficheiros key.pem e cert.pem devem ser colocados ao lado da pasta do projecto .

Ativar TLS

A instalação de arquivos key.pem e cert.pem torna possível usar TLS com o servidor 4D. Entretanto para que as conexões TLS sejam aceitas pelo servidor, precisa ativá-las:

  • Com o servidor 4D web, precisa ativar HTTPS . Pode estabelecer a opção HSTS para redirigir os navegadores que tentem conectar no modo http.
  • Com o servidor de aplicação, deve selecionar a opção Encrypt Client-Server Communications na página "Client-server/Network options" do diálogo de configurações.
  • Com o servidor SQL deve selecionar a opção Ativar TLS na página "SQL" do diálogo configurações.

O servidor 4D web é compatível com a opção HSTS para prevenir um navegador de

Perfect Forward Secrecy (PFS)

PFS adiciona mais um nível de segurança para suas comunicações. Ao invés de usar chaves de troca pré-estabelecidas, PFS cria chaves de sessão cooperativamente entre as partes que se comunicam usando os algoritmos Difie-Hellman (DH). A maneira conjunta com a qual essas chaves são construídas cria um "segredo compartilhado" que impede partes externas de as comprometerem.

Quando TLS estiver ativado no servidor, PFS é ativado automaticamente. Se o arquivo dhparams.pem (documento que contém a chave privada DH do servidor) ainda não existir, 4D vai gerar o arquivo automaticamente com um tamanho de chave de 2048. A geração inicial deste arquivo pode levar vários minutos. O arquivo é colocado com os arquivos key.pem e cert.pem.

Se utilizar uma lista de cifrado personalizada e quiser habilitar o PFS, deve comprovar que contenha entradas com algoritmos DH ou ECDH (Elliptic-curve Diffie-Hellman).