Busca


imprimir pdf

Ligação Segura para os meus sites : HTTPS


Introdução


SSL (Secure Socket Layer) é destinado a encriptar de maneira segura as informações trocadas entre duas maquinas. Sobre o seu servidor dedicado, pode ser útil de utilizar SSl afim de proteger informações sensíveis. Encontrará mais detalhes sobre o funcionamento de SSL aqui.

Procedimento


Antes de poder activar/gerar um certificado SSL, temos de verificar que a opção está bem activa sobre a sua maquina. Apache foi compilado por defeito com SSL, basta só indicar-lhe que ele deve tomá-lo em conta ao iniciar. Depois, pode ou não comprar um certificado oficial, ou mesmo gerar um certificado.

"Um certificado SSL gerado por si vai provocar um alerta de identificação !! Isto não reduz em nada a segurança trazida por este certificado."

Activação SSL para um primeiro site


Atenção ! Este procedimento é indicado para um sistema RedHat

  • Via SSH :

O servidor web simples (HTTP) funciona sobre o porto 80, o servidor em modo SSL funciona sobre o porto 443. Verificamos então num primeiro tempo se este porto já esta escutado por Apache :

root@crashtest root# netstat -tanpu | grep ":443"
root@crashtest root#


Nenhum resultado. o servidor ainda não está activado para o SSL; Basta-nos desencomendar esta opção :

root@crashtest root# pico /etc/sysconfig/apache


Para não comentar retiramos o # antes da opção em questão :

# Uncomment to active SSL
OPTIONS="-DSSL"


Gravamos o ficheiro com ctrl+x e 'Y' ou 'O' e enter e reiniciamos Apache afim de aplicar as mudanças.

root@crashtest root# /etc/init.d/httpd restart
Paragem de httpd : OK
Inicio de httpd : OK
root@crashtest root#


Se nós verificarmos agora o nosso porto 443, vemos que Apache está agora sobre o porto 443.

root@crashtest root# netstat -tanpu | grep ":443"
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3291/httpd


  • Segurança

Muito importante. Existe uma falha de segurança muito simples de explorar em todas as versões de Openssl inferiores a 0.9.6k. Temos obrigatoriamente de aplicar os patchs de segurança da OVH antes da reabertura da máquina. Senão a sua máquina pode ser hackada em poucos dias (existem muitos scans das redes feitas pelos hackers para descobrir as maquinas vítimas). Para ver algumas versões tem :

root@crashtest root# rpm -qa | grep ssl


Obteve alguma coisa do género :

openssl-devel-0.9.6k-1
openssl-0.9.6k-1
openssl-perl-0.9.6k-1


Se têm uma versão anterior a esta em baixo referida, por exemplo se têm Openssl-0.9.6i não é bom. Volte a fechar o porto 443 e aplique os patchs. Têm explicações em ReleasePatchSeguranca.

Certificado


Agora que o suporte SSL está activo e acessível precisamos de um certificado SSL. Pode comprar na OVH : http://www.ovh.pt/pt/particulares/produtos/ssl.xml ou gerar o seu próprio certificado como explicado acima.

Via SSH

Vá à pasta das chaves ssl onde já deveria encontrar outras chaves SSL.

root@crashtest root# cd /usr/local/apache/conf/ssl.key


e crie a sua chave para o comando seguinte : (claro que deve substituir amplirikal.com pelo domínio para o qual deseja instalar o certificado.).

root@crashtest ssl.key# openssl genrsa 1024 > amplirikal.com.key


Pode proteger o seu ficheiro pondo o chmod a 400 :

root@crashtest ssl.key# chmod -c 400 amplirikal.com.key


Agora, vamos preencher o pedido de certificado (CSR) e responder as perguntas que vão ser feitas :

root@crashtest ssl.key# openssl req -new -key amplirikal.com.key > amplirikal.com.csr
Using configuration from /usr/share/ssl/openssl.cnf
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) AU:FR
State or Province Name (full name) Some-State:LILLE
Locality Name (eg, city) []:LILLE
Organization Name (eg, company) Internet Widgits Pty Ltd:amplirikal.com


e assine o certificado :

root@crashtest ssl.key# openssl x509 -req -days 365 -in amplirikal.com.csr -signkey amplirikal.com.key -out amplirikal.com.crt
Signature ok
subject=/C=FR/ST=LILLE/L=LILLE/O=amplirikal.com/OU=photos/CN=Trinity/Email=raven@united-irc.org
Getting Private key
root@crashtest ssl.key#


Ainda é preciso deslocar os seus ficheiros no directório correcto :

root@crashtest root# mv /usr/local/apache/conf/ssl.key/amplirikal.com.crt /usr/local/apache/conf/ssl.crt
root@crashtest root# mv /usr/local/apache/conf/ssl.key/amplirikal.com.csr /usr/local/apache/conf/ssl.csr


e o nosso certificado esta pronto.

Configuração Apache


Edições, sempre sob SSH, o nosso ficheiro httpd.conf :

root@crashtest root# pico /httpd.conf


Procure desta maneira a secção e verifique que o suporte SSL está activo :

##
    1. SSL Support
    2. When we also provide SSL we have to listen to the
    3. standard HTTP port (see above) and to the HTTPS port

Listen 80
Listen 443


Na segunda secção ao nível do "NameVirtualHost" adicionamos o IP com o porto 443.

#NameVirtualHost 12.34.56.78:80
  1. NameVirtualHost 12.34.56.78
NameVirtualHost? 213.186.37.141:80
NameVirtualHost? 213.186.37.141:443


E procure a terceira secção e modifique o Virtual Host por defeito para pôr la o seu certificado. Atenção na parte seguinte, nós cortamos as linha comentadas para que não demore muito. Agradecemos que não apague estas linhas no seu ficheiro mas que simplesmente edite as linhas indicadas abaixo.



  1. General setup for the virtual host
DocumentRoot? "/home/ampli/www"
ServerName? crashtest.united-irc.com
ServerAdmin? tech@United-irc.org
ErrorLog? logs/error_ssl_log
TransferLog? logs/access_ssl_log
  1. SSL Engine Switch:
  2. Enable/Disable SSL for this virtual host.
SSLEngine on
  1. Server Certificate:
SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt
  1. Server Private Key:
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key


Indicámos acima o local do certificado. Agora, ainda temos de adicionar o host virtual para o site. O seu host virtual deve então situar-se entre e .


DocumentRoot? "/home/ampli/www"
ServerName? amplirikal.com
ServerAdmin? tech@United-irc.org
ErrorLog? logs/error_ssl_log
TransferLog? logs/access_ssl_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key

SSLOptions +StdEnvVars


SSLOptions +StdEnvVars




Basta-nos deixar httpd.conf com ctrl+x, confirmando as modificações e reiniciando o Apache :

root@crashtest www# /etc/init.d/httpd restart
Paragem de httpd : OK
Inicio de httpd : OK
root@crashtest www#


Adicionar um domínio suplementar


Pode adicionar um domínio suplementar adicionando simplesmente após o primeiro e antes do a parte VirtualHost? modificar para o domínio suplementar :


DocumentRoot? "/home/loboto/www"
ServerName? lobotomotiv.org
ServerAdmin? tech@United-irc.org
ErrorLog? logs/error_ssl_log
TransferLog? logs/access_ssl_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key

SSLOptions +StdEnvVars


SSLOptions +StdEnvVars

SetEnvIf? User-Agent? ".*MSIE.*"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
CustomLog? logs/ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"


Conclusão


Se efectuou correctamente as manipulações pode agora chamar os seus sites via https. Não se esqueça que uma alerta vai afixar-se se utiliza um certificado que gerou e que para todos os domínios UM SÓ certificado será utilizado. Como no exemplo de configuração acima, todos os domínios adicionados na secção "VirtualHost" vão responder com o certificado gerado ao princípio de este guia. Se precisa de pôr vários sites sob https com certificados bem distintos, têm a possibilidade de utilizar os seus endereços IP failover.