Apache com SSL (Https)
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 sslVerifique 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 restartGrande abraço.
Olá Dr. Finger parabéns pelo blog, excelente artigo.