No Debian e derivados você pode gerar um certificado caseiro utilizando o script “make-ssl-cert”, instalado através do pacote “ssl-cert”:
# apt-get install ssl-cert
Ao usar o script, você deve especificar o arquivo com o template (/usr/share/ssl-cert/ssleay.cnf) e o arquivo onde o certificado será salvo (/etc/apache2/ssl/apache.pem, para gerar um certificado padrão para o servidor), como em:
# mkdir /etc/apache2/ssl/
# cd /etc/apache2/ssl/
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf apache.pem -days 1095
A opção “-days” especifica a validade do certificado, que no exemplo será de 3 anos. O script solicitará as informações sobre a organização que serão incluídas no certificado, incluindo o código de país, estado, cidade e o nome da empresa. Estes são dados públicos, que serão exibidos aos clientes como parte das propriedades do certificado. O mais importante vem no final, quando o script pergunta:
Common Name (eg, your name or your server’s hostname) []:
Nesse ponto, você deve sempre fornecer a URL completa do servidor onde o certificado será usado, como em “www.gdhpress.com.br” ou “ssl.gdhn.com.br”. Se você especificar um domínio diferente, o cliente receberá um aviso adicional ao se conectar, avisando do problema. Isso afastará visitantes, já que muitos pensarão tratar-se de uma fraude.
Com o certificado gerado, abra agora o arquivo “/etc/apache2/ports.conf” e adicione a linha “Listen 443” (a porta usada pelo https), como em:
Port 80
Listen 443
Com isso, o Apache 2 já está configurado. Falta apenas ativar o uso do SSL dentro da configuração do(s) virtual host(s) onde ele for ser utilizado. Para testar, vamos ativá-lo na página padrão que usamos para testar o servidor.
Abra o arquivo “/etc/apache2/sites-available/default“. No início do arquivo, substitua a linha “NameVirtualHost *”, por:
NameVirtualHost *:443
NameVirtualHost *:80
Isso explica que o Apache deve escutar tanto a porta 80 padrão, quanto a porta 443, usada pelo SSL. Logo em seguida, substitua a linha “<VirtualHost *>”, por:
<VirtualHost *:80>
Até aqui, dividimos a configuração em duas seções, uma para a porta 80, outra para a porta 443, usada pelo SSL. Falta agora adicionar a seção referente à configuração do SSL no final do arquivo:
<VirtualHost *:443>
DocumentRoot /var/www/
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>
Reinicie o servidor (/etc/init.d/apache2 restart) e acesse o endereço “https://127.0.0.1” para testar a configuração. Ao conectar, o navegador exibe um aviso “O certificado do servidor falhou no teste de autenticidade” ou similar, o que é normal ao usar um certificado caseiro.
O CentOS não inclui o make-ssl-cert, mas inclui um outro script bastante prático, disponível dentro da pasta “/etc/pki/tls/certs”:
# cd /etc/pki/tls/certs
Uma vez dentro da pasta, use o comando “make” seguido pelo nome do arquivo que será gerado, como em:
# make apache.pem
Por default, a validade do certificado gerado pelo script será de 365 dias. Para usar outro valor, edite o arquivo “make-dummy-cert” dentro da pasta, substituindo o “-days 365” na quinta linha de baixo para cima pelo valor desejado antes de gerar o certificado.
Isso gerará o arquivo “/etc/pki/tls/certs/apache.pem“, contendo o certificado. Para que ele seja usado, abra o arquivo “/etc/httpd/conf.d/ssl.conf” e localize a linha:
#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
Descomente-a e indique a localização do arquivo gerado, como em:
SSLCACertificateFile /etc/pki/tls/certs/apache.pem
A partir daí, você pode reiniciar o serviço httpd e testar a configuração acessando o endereço “https://servidor”.
Diferente do Debian, não é necessário adicionar a linha “Listen 443″ na configuração do Apache, pois a linha faz parte do arquivo “/etc/httpd/conf.d/ssl.conf”, que é criado automaticamente ao instalar o pacote mod_ssl. Dentro do arquivo, você encontra as linhas:
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
Listen 443
Em outras distribuições, você pode usar diretamente o openssl para gerar o certificado. Nesse caso, o comando é maior, já que precisamos especificar manualmente um volume maior de parâmetros. Scripts como o make-ssl-cert são desenvolvidos justamente para tornar a geração do certificado mais simples.
# openssl req -new -x509 -days 1095 -sha1 -newkey rsa:1024 -nodes \
-keyout server.key -out meuservidor.csr
Este comando gera dois arquivos separados, o “server.key”, que contém a chave criptográfica e o “meuservidor.csr”, que contém o certificado que será fornecido aos clientes. Estes dois arquivos tem a mesma função do arquivo “.pem” que é gerado pelos scripts do Debian e do CentOS, apenas desmembrado em dois arquivos separados. Para usá-los, você precisa apenas adicionar duas linhas separadas dentro do arquivo de configuração principal do Apache (“/etc/apache2/httpd.conf” no caso do Debian ou “/etc/httpd/conf/httpd.conf”, no caso do CentOS), especificando as localizações dos dois arquivos:
SSLCertificateFile /etc/apache2/ssl/meuservidor.csr
SSLCertificateKeyFile /etc/apache2/ssl/server.key
Não esqueça de ativar o mod_ssl e incluir a linha “Listen 443” na configuração do Apache, para que ele passe a escutar a porta do SSL. Certifique-se também de que a porta 443 está aberta na configuração do firewall.
Deixe seu comentário