Hoje em dia, é importante que todos os dados sensíveis que são trasmitidos entre um cliente e um servidor sejam cifrados de modo a que estes não possam ser entendidos por terceiros. Na prática, quando aderimos a um serviço online que nos solicita dados pessoais ou credenciais de acesso (ex. sites de bancos) é importante que a toda a informação passada seja cifrada de modo a tornar-se ilegível. No caso dos servidor Web (entre outros serviços de uma rede), uma das formas de proceder paraa cifrar dos dados é recorrendo ao protocolo SSL.
Sendo este o primeiro artigo relacionado com a certificação digital, hoje vamos apresentar alguns conceitos teóricos associados a este tema.
O SSL é um protocolo criptográfico baseado em cifras assimétricas (chave privada + chave publica) que tem como principal objectivo providenciar segurança e integridade dos dados transmitidos em redes inseguras como é o caso da Internet. Quando um utilizador entra ema um site que recorre ao SSL, o servidor envia ao cliente a chave publica para que esta possa cifrar a informação que vai ser passada ao servidor. Quando o servidor recebe essa informação, usa a sua chave privada para decifrar a informação transmitida pelo cliente.
Existem várias aplicações para este protocolo, como por exemplo o comércio eletrónico, servidores Web, servidores FTP, etc. Para identificar facilmente se estão visualizando um site seguro basta verificar no URL que em vez de estar o normal http:// se encontra https://. Saber mais aqui.
Chave pública vs Chave privada
A chave pública, que está presente no certificado digital, é usada para cifrar os dados a serem enviados ao para o servidor. Já a chave privada, que só o dono do certificado conhece, serve para decifrar a informação que foi cifrada com a sua chave pública.
Certificado Digital
Um certificado é um documento digital que contém informação acerca de quem o possui, nome, morada, localidade, e-mail, duração do certificado, domínio (Common Name) e nome da entidade que assina o certificado. Contém ainda uma chave pública e um hash que permite verificar a integridade do próprio certificado (i.e se um certificado foi alterado).
Um certificado assenta numa estrutura hierárquica de confiança, cujo topo é pertença de uma Entidade Certificadora (CA Root Certificate).
Esta entidade certificadora confirma que o possuidor do certificado é quem afirma ser, e assina o certificado, impossibilitando desta forma a sua modificação. Em Portugal, como entidade certificadora temos como exemplo a multicert.
SSL
O protocolo SSL – Secure Socket Layer é um protocolo que foi desenvolvido pela Netscape com o objectivo de garantir transações seguras entre um servidor web e um browser. O protocolo utiliza uma entidade certificadora para identificar o servidor ou o servidor e o cliente.
Openssl
O OpenSSL é uma implementação em código aberto dos protocolos SSL e TLS. Uma das funcionalidades consiste na criação de certificados X.509 que permitem confidencialidade em ligações com SSL (HTTPS) entre outros serviços. Os certificados digitais X.509 representam para o utilizador, o mecanismo de segurança mais visível no âmbito da certificação digital.
Depois de termos uma breve descrição sobre o que são chaves privadas e chaves publicas, um certificado digital, o protocolo SSL e o OpenSSL, hoje vamos aprender a produzir certificados digitais.
Para a criação do presente tutorial, recorri a uma máquina com o CentOS 6. Como referido no tutorial anterior, o OpenSSL permite criar e entidade de certificação privada e disponibiliza ferramentas para criação e gestão de chaves privadas e publicas e certificados digitais.
Caso não tenham o OpenSSL instalado, podem fazê-lo executando o comando
Para podermos emitir um certificado X.509 é importante (apesar de opcional) rever alguns parâmetros no arquivo de configuração do openSSL. No CentOS o arquivo de configuração (openssl.cnf) encontra-se em/etc/pki/tls/openssl.cnf e nele podemos definir algumas informações relativamente à entidade certificadora e também indicar o directório onde os certificados vão ser guardados por omissão. De referir que este processo só é necessário efetuar a primeira vez.
Feitas as alterações, podemos passar de imediato à criação de certificados X.509.
Nota importante: Para que tudo funcione correctamente, é importante que a máquina onde temos o apache a correr tenha um nome. Esse informação pode ser definida em /etc/sysconfig/network no parâmetro HOSTNAME.
Criação de certificados para servidores
Para a criação dos certificados X.509 para o servidor apache devem executar os seguintes 3 passos:
Criação da chave privada RSA para o certificado do servidor
Esta chave RSA ira ser posteriormente utilizada para assinar o CSR (Certificate Signing Request – contem várias informações sobre a entidade a certificar, incluindo a chave publica).
Nota1: Na parte final do processo de criação da chave privada é necessário indicar uma senha.
Criação do CSR para o certificado do servidor
Nota2: No campo Common Name (CN) devem colocar o nome do servidor (ex. www.pplware.com)
Emitir certificado X.509 para o servidor indicado
Depois de termos deixado uma breve descrição sobre o que são chaves privadas e chaves publicas, um certificado digital, o protocolo SSL e o OpenSSL, e de termos aprendido a produzir certificados digitais, hoje vamos finalizar esta sessão de tutoriais, explicando como se configura o Apache com o protocolo SSL (recorrendo aos certificados já criados).
Para quem não conhece, o Apache foi desenvolvido pela Apache Software Foundation e é o servidor WWW mais popular, tendo suporte para a maioria dos sistemas operacionais.
No CentOS o principal arquivo de configuração do Apache encontra-se em /etc/httpd/conf/httpd.conf. Dentro do directório /etc/httpd/conf.d/ podemos proceder à configuração dos módulos.
Como instalar o mod_ssl?
Como referido, o Apache tem suporte para SSL através do modulo mod_ssl. Para instalar o modulo mod_ssl basta executar o comando:
yum install mod_ssl
Após a instalação é criado automaticamente o ficheiro /etc/httpd/conf.d/ssl.conf, onde podemos realizar as configuração associadas ao SSL. Usando o ficheiro já criado, apenas necessitamos de indicar os seguintes paramentos:
- SSLCertificateFile /etc/pki/tls/pplware/www.crt
- SSLCertificateKeyFile /etc/pki/tls/pplware/chaveprivada.key
Nota: De referir, que osarquivos foram produzidos com base no processo descrito neste artigo
Após a configuração, apenas temos de reiniciar o Apache (service httpd restart) e verificar se tudo está a funcionar correctamente. Para isso, basta que abram um browser e estabelecem ligação ao servidor.
Como podemos ver pela imagem anterior, a ligação estabelecida ao servidor é segura, sendo usado o protocolo TLS. Relativamente ao aviso “O certificado do servidor não é fidedigno” tal acontece porque o browser não conhece a nossa autoridade de certificação. Para tal, no primeiro aviso basta que indiquem que confiam na autoridade de certificação e que pretendem prosseguir.
Esperamos que este tutorial seja útel e que a partir de agora possam implementar servidores Apache seguros. O processo de criação de certificados é idêntico para outros serviços da rede como por exemplo e-Mail, FTP, etc. Alguma duvida ou questão, basta deixar comentários .
Fonte:http://pplware.sapo.pt
Nenhum comentário:
Postar um comentário