quarta-feira, julho 22, 2009

iMasters - Configuração do SSL no Apache - Apache

Terça-feira, 27/01/2009 - 14:20 - Por Roberto Santos
Seções relacionadas:
Configuração do SSL no Apache

A base para se utilizar esse tipo de serviço seria a facilidade e agilidade de ser implementado, sem maiores problemas na hora de executar a aplicação ou comunicação sem esquecer do fator e característica primordial do HTTPS: a segurança.

Apache com SSL, sua aplicação é conhecida como um servidor web capaz de fornecer por padrão criptografia baseada no protocolo SSL, utilizando o OpenSSL e SSLeay. A licença é BSD-Style e pode ser utilizada para fins comerciais e não comerciais.

Esse sistema foi criado pelo desenvolvedor Ben Laury, participante direto dos projetos Apache e OpenSSL.

SSL

Esse protocolo suporta uma variedade de diferentes algoritmos criptográficos, ou ciphers, para uso em operações de autenticação e do cliente, transmissão de certificados e estabelecimento de conexões.

Apache2

Como já sabemos, o Apache2 é um servidor web que quando combinado com o protocolo SSL se torna mais confiável pela questão da segurança de criptografia utilizada pelo protocolo.

HTTPS

É um protocolo ou conjunto de regras e códigos com uma camada de segurança que torna a navegação na internet mais segura, diferente do HTTP, que não dispõe do mesmo nível de segurança a navegação.

O HTTPS serve para que se estabeleça um dialogo entre os navegadores e os servidores da seguinte forma: os navegadores mandam mensagens para os servidores e as mesmas são encriptografadas, ou seja, embaralhadas de forma que somente os destinatários decifrem o seu conteúdo, com isso se agrega mais segurança entre a comunicação cliente servidor.

Pré-requisitos:

  • Conexão com internet;
  • Distribuição Ubuntu Linux (este tutorial foi validado no Ubuntu Desktop 7.10);
  • Editor de texto (neste tutorial foi utilizado pico).

1° Passo:

É necessário que o usuário efetue o logon com o login de administrador, o "root". Para configurar o uso do proxy, é preciso acrescentar as linhas no arquivo /etc/profile, usando o pico ficaria o seguinte comando:

# pico /etc/profile

Acrescentando as seguintes linhas com as devidas alterações do endereço ip e porta da rede:

http_proxy="http://ip.do.servidor.proxy:porta"

ftp_proxy="http://ip.do.servidor.proxy:porta"

export http_proxy ftp_proxy

2° Passo:

É necessário fazer a atualização dos pacotes de instalações de serviços, o comando é o seguinte:

# apt-get update

3° Passo:

Feita essa atualização, será iniciada a instalação OpenSSL. O OpenSSL é uma implementação de código aberto dos protocolos SSL e TLS. A biblioteca implementa as funções básicas de criptografia e disponibiliza várias funções utilitárias. Para a instalação usamos o seguinte comando:

# apt-get install openssl

4° Passo:

Agora será instalado o Apache2 mais o complemento necessário para a ativação do SSL, o comando será o seguinte:

# apt-get install apache2 apache2.2-common

Se houver pedidos de confirmação durante este procedimento, o usuário deve confirmar com "s". Em seguida será feita a habilitação do módulo SSL no Apache com o seguinte comando:

# a2enmod ssl

5° Passo:

O Apache2 com SSL funciona através de um certificado reconhecido na web. Para gerar o certificado (CSR) será necessário a criação de uma chave, essa chave deverá conter no mínimo 08 caracteres, a criptografia usada nessa chave é a DES3, essa chave ficará no arquivo server.key. De dentro do diretório onde ela ficará armazenada, o "/etc/ssl/private", o usuário deve digitar o comando abaixo para criação da chave:

# openssl genrsa -des3 -out server.key 1024

6° Passo:

Com a chave criada é importante acrescentar informações. Após digitar o comando abaixo, ele pedirá a chave e para preencher alguns dados, são os dados que serão visualizados referentes ao criador do certificado:

# openssl req -new -key server.key -out server.csr

Toda vez que o usuário reiniciar o Apache2 ele pedirá a chave. Isso faz com que caso haja um restart por algum motivo, o serviço não suba pois dependerá da presença humana para a digitação. Os comandos abaixo fazem com que o Apache2 não peça a chave em caso de restart do serviço, ou seja, ele faz a autenticação automaticamente. O usuário deve entrar no diretório "/etc/ssl/private" e executar o comando abaixo:

# openssl rsa -in server.key -out server.key.insecure

Executado o comando acima, deverá feita a substituição do arquivo atual pelo criado. Antes desse passo o usuário deve fazer uma cópia de segurança do arquivo atual ou renomear o arquivo "server.key". Com o comando abaixo será feita a renomeação e o arquivo permanecerá na mesma pasta:

# mv server.key server.bak

Após a renomeação do arquivo, será feita a renomeação do arquivo criado, que fará com que não seja mais pedida a chave quando houver restart do serviço. O comando será o seguinte:

# mv server.key.insecure server.key

7° Passo:

O certificado será criado com o comando abaixo:

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

8° Passo:

Será necessário efetuar a instalação da chave e do certificado anteriormente criados com os seguintes comandos:

# cp server.crt /etc/ssl/certs

# cp server.key /etc/ssl/private

No comando para instalação do server.key vai dar uma mensagem, isso porque foi criado no próprio diretório onde ele seria instalado, se tivesse sido criado em outro diretório não haveria a mensagem.

9° Passo:

Agora serão efetuadas algumas alterações de configuração no Apache editando o arquivo /etc/apache2/sites-available/default. Usando o pico o comando será o seguinte:

# pico etc/apache2/sites-available/default

Dentro do arquivo, abaixo da linha "DocumentRoot /var/www/", é necessário acrescentar as seguintes linhas:

SSLEngine onSSLOptions +FakeBasicAuth +ExportCertData +StrictRequireSSLCertificateFile /etc/ssl/certs/server.crtSSLCertificateKeyFile /etc/ssl/private/server.key

10° Passo:

O HTTPS escuta sobre a porta de número 443. É necessário adicionar a linha abaixo ao /etc/apache2/ports.conf, se já não houver:

   Listen 443

11° Passo:

Depois de instalado o certificado será feito o reinício do Apache2. Se o usuário optou pela instalação com o pedido da chave criada no início do tutorial, a chave será pedida toda vez que houver reiniciar o serviço, mas se o usuário efetuou os passos para a autenticação automática, o Apache2 não pedirá a chave, o comando será o seguinte:

# /etc/init.d/apache2 restart

12° Passo:

Feitos todos os passos do tutorial será feito um teste prático, o usuário deve criar uma pasta chamada "teste" dentro do "/var/www/", o comando para criar é:

# mkdir /var/www/nome_pasta

Em seguida deve-se editar o arquivo /etc/apache2/sites-available/default com um editor de texto, usando o pico ficará:

# pico /etc/apache2/sites-available/default

Dentro do arquivo o usuário deve alterar as linhas que possuam "/var/www/" para "/var/www/teste/" (só serão duas linhas), assim estará sendo indicando o caminho para a pasta da página inicial.

Dentro da pasta "/var/www/teste/" deve-se criar o arquivo "index.html". Para criar o arquivo dentro da pasta teste o usuário deve digitar:

# pico index.html

Inserir os códigos abaixo, depois salvar e sair:

  Teste do Apache2 com SSL teste efetuado com sucesso...

Em seguida, no browser, para testar o endereço será o seguinte:

https://localhost/teste/

Será pedido para aceitar o certificado, pois o certificado criado no tutorial não será reconhecido automaticamente pelo browser como seguro. Para haver esse reconhecimento o criador da chave deve contratar uma autoridade certificadora para gerar o certificado a partir da chave gerada. Eessa autoridade de certificação é uma empresa autorizada a emitir, renovar e cancelar certificados digitais após verificar a identidade e a legitimidade da parte solicitante através de uma autoridade de registro. A principal autoridade de certificação é a VeriSign.

Referências

HTTPD - Apache2 Web Server, disponível em:

https://help.ubuntu.com/7.10/server/C/httpd.html#https-configuration

Acessado em 10/11/08

Certificados Digitais, disponível em:

http://www.speedhost.com.br/certificado-digital-ssl/faqs/index.php

Acessado em 10/11/08

Artigo escrito por Roberto Santos, Marcelo Gordiano e Elpidio Neri.


iMasters - Configuração do SSL no Apache - Apache

 



 

Technorati Marcas: : , , , ,

 

 

BlogBlogs Marcas: : , , , ,

 

Nenhum comentário:

Postar um comentário

Aúncio