11 de maio de 2009

SSL no Apache

Por Lucas Sabino

Tive dúvidas em relação como o Apache se comporta em relação às portas. O apache por padrão trabalha com a porta http, porta 80. Qualquer muleque de rua sabe disso. Aí que eu pensei e o tal do https que se comunica pela porta 443? Como o apache faz?? Então procurei.. dei umas googadas, perguntei pro meu chefe, (que é administrador de redes Linux há 8 anos) enfim.. descobri! Fiz um apache trabalhando com http e com https simultaneamente.

Vou postar aqui uma espécie de tutorial de como colocar o ssl no apache.

----------------------------------------------------------------------------------------------------------

Após ter instalado o Apache2, usando entre os parâmetros do configure a opção --enable-ssl, vá até o diretório /usr/local/apache2/conf e edite o httpd.conf. Verifique se existem as linhas:


IfModule mod_ssl.c>
Include conf/ssl.conf
< /IfModule>


Se tiver, OK. Saia do arquivo e agora edite no mesmo diretório o arquivo ssl.conf. Nesse arquivo vamos indicar onde ficarão as chaves para a criação da conexão segura.

Edite a linha:

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt

Para ficar assim:

SSLCertificateFile /etc/ssl/apache2/server.crt

E também edite a linha:

SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key

Para ficar assim:

SSLCertificateKeyFile /etc/ssl/apache2/server.key

Antes de salvar e sair, edite as opções do SSL na parte onde está a configuração do virtual host:

DocumentRoot "/usr/local/apache2/htdocs/"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log

Edite da forma que achar conveniente. Agora vamos criar o diretório /etc/ssl/apache2 e entrar lá para criar as chaves:

# mkdir /etc/ssl/apache2
# cd /etc/ssl/apache2

Agora vamos criar a chave:

# openssl req -new > new.cert.csr

Vai aparecer algo semelhante a:

Generating a 1024 bit RSA private key
...............++++++
......++++++
writing new private key to \\\\\\\' privkey.pem\\\\\\\'

Enter PEM pass phrase:



Nessa parte informe uma senha, uma frase para que seja criado esse arquivo. Depois repita novamente e vá respondendo as perguntas que forem aparecendo. O próximo comando é:

# openssl rsa -in privkey.pem -out new.cert.key

Aqui você vai precisar informar a senha ou frase que você adicionou no primeiro comando acima.

# openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 1825

Pronto, agora foram criados os arquivos, vamos renomeá-los:

# cp new.cert.cert server.crt
# cp new.cert.key server.key

Depois disso vai estar tudo pronto, pare e inicie o Apache novamente usando o seguinte comando:

# /usr/local/apache2/bin/apachectl startssl

Agora acesse o seu servidor usando o endereço https://ip_do_servidor/ e assim ele vai informar o certificado e perguntar se vai aceitar. E esta pronto, ativado o suporte a ssl.
------------------------------------------------------------------------------------------------------

Bom é isso! Isso me deixou com uma dúvida imensa e consegui resolver o meu problema cerebral que não deixava eu dormir de tanta curiosidade. Espero informar para aqueles que não sabem!

Flw!!!

Nenhum comentário: