Apache com SSL (Https)

25/04/2009 22:06

Olá pessoal,
Neste vou descrever os passos para criar um certificado digital e configurar o Apache para trabalhar com SSL. Semana passada executei este procedimento em um Linux Debian Lenny e hoje vou mostrar com base no Ubuntu Hardy.

Supondo que você já está com o Apache2 instalado, vamos instalar o pacote openssl. Abra um terminal e digite o seguinte comando:

sudo apt-get install openssl

Depois vamos criar um diretório para salvar nosso certificado.

sudo mkdir -p /etc/apache2/certs
cd /etc/apache2/certs

Agora chegamos ao certificado. Nós só precisaremos de um dos dois comandos abaixo, o primeiro deles gera um certificado protegido por uma frase secreta e o segundo não, a diferença está no parâmetro -des3. No meu caso eu utilizei o segundo deles, pois caso você precise reiniciar o apache ou a máquina, esta a frase secreta lhe será solicitada e no caso de um restart acidental do servidor, o apache não iniciará o serviço enquanto este frase não for digitada.

sudo openssl genrsa -des3 -out server.key 1024

ou

sudo openssl genrsa  -out server.key 1024

Digite o comando ls e verifique se o arquivo server.key foi criado. Se não, execute novamente o passo anterior, caso contrário, continuamos. Este próximo comando irá gerar o certificado com base na chave gerada pelo comando anterior.

sudo openssl req -new -x509 -days 1825 -key server.key -out server.crt

Nesse comando você deve ter notado o parâmetro -days 1825, isso significa que a validade do seu certificado é de 1825 dias ou 5 anos, você pode alterar esse valor mas não é recomendável aumentar mais que isso. Continuando……. Responda o questionário com as informações do certificado.

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]:BR
State or Province Name (full name) [Some-State]:Paraná
Locality Name (eg, city) []:Curitiba
Organization Name (eg, company) [Internet Widgits Pty Ltd]:FingerHome
Organizational Unit Name (eg, section) []:Bedroom
Common Name (eg, YOUR name) []:Leandro Finger Romanovski
Email Address []:eu@leandrofinger.com

Digite novamente o comando ls e verifique agora se o arquivo server.crt foi criado. Pronto, esse é o nosso certificado. Agora vamos configurar o Apache para utilizá-lo. Vá até o diretório sites-available e edite um arquivo novo com o nome do seu site.

cd /etc/apache2/sites-available/
sudo gedit meusite-ssl

Esse arquivo deve conter as informações do nosso site.

<VirtualHost *:443>
	Servername www.meudominio.com.br
	ServerAdmin admin@meudominio.com.br
	DocumentRoot /var/www/
	CustomLog /var/log/apache2/access_ssl.log combined
	ErrorLog /var/log/apache2/error_ssl.log
	LogLevel notice
        SSLEngine on
        SSLCertificateFile /etc/apache2/certs/server.crt
        SSLCertificateKeyFile /etc/apache2/certs/server.key
        ServerSignature On
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>
 
Alias / /var/www/blog/
<Location />
	SSLRequireSSL
	ErrorDocument 403 https://www.meudominio.com.br/
</Location>

Salve e feche o arquivo. Agora vamos habilitar o módulo de SSL no Apache. No terminal digite o comando abaixo.

sudo a2enmod ssl

Verifique no arquivo ports.conf se o apache está habilitado para escutar na porta 443, a porta padrão para Https.

sudo gedit /etc/apache2/ports.conf
Listen 80
 
Listen 443

Agora é só reiniciar o Apache e tudo certo.

sudo apache2ctl restart

Grande abraço.

1 Comentário to “Apache com SSL (Https)”

  1. Olá Dr. Finger parabéns pelo blog, excelente artigo.

Deixe um Comentário