Configurando SSL/HTTPS para Apache em ambiente de desenvolvimento
Autor: Pedro Ribeiro | Publicado: 2012-07-26T20:06:00-07:00


Olá pessoal.

Nesse post irei mostrar como configurar um SSL, para protocolo HTTPS em ambiente de desenvolvimento.

Por que realizar esta configuração????

Normalmente para serviços que necessitam que sejam trafegados dados sigilosos, é utilizado um protocolo específico para isto, que é o HTTPS. Para se utilizar este protocolo no seu site, é necessário comprar um certificado SSL assinado, para que seja possível, mas não é esse o objetivo deste post....


Para quem desenvolve aplicações que utilizam o protocolo seguro é necessário também ter em ambiente de DEV o certificado, mas vou pagar para ter um certificado no meu ambiente?????
Não. Para isto existe os certificados auto assinados. Iremos criar um certificado e nós mesmos iremos assiná-lo, assumindo qualquer risco por isso.


Vamos a configuração...

Primeiramente segue meu ambiente:

Ubuntu 12.04
Apache 2

Primeiro passo, instalar o openssl e o ca-certificates

apt-get install openssl ca-certificates

Depois crie o diretório 'ssl', onde preferir

mkdir ssl
cd ssl

Agora vamos criar a chave primária

openssl genrsa -des3 -out seu_site.key 1024

Deverá aparecer algo pareceido com isso

Generating RSA private key, 1024 bit long modulus
..................................................................++++++
...................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for seu_site.key:


É necessário digitar uma senha, digite uma de sua escolha.

Após a inserção da senha, iremos configurar para ela não ser mais requisitada.

openssl rsa -in seu_site.key -out seu_site.key.insecure

Enter pass phrase for seu_site.key:
writing RSA key

Altere a permissão para o arquivo seu_site.key.insecure

chmod 600 seu_site.key.insecure

Agora pediremos a assinatura do nosso certificado local

openssl req -new -key seu_site.key -out seu_site.csr


Enter pass phrase for seu_site.key:
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]:PT
State or Province Name (full name) [Some-State]:Brazil
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sua Organização
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:seu_site
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


Será necessário digitar alguns dados para completar a assinatura, siga o exemplo acima.

Para finalizar a configuração iremos habilitar o certificado.

openssl x509 -req -days 365 -in seu_site.csr -signkey seu_site.key -out seu_site.crt

Deverá aparecer uma saída parecida com esta, será necessário digitar a senha escolhida anteriormente.


Signature ok
subject=/C=PT/ST=Brazil/O=Home Lan/CN=server.home.lan
Getting Private key
Enter pass phrase for seu_site.key:



No diretório ssl, deve haver estes arquivos:

-seu_site.key
-seu_site.key.insecure
-seu_site.csr
-seu_site.crt


Agora iremos copiar os arquivos para os locais corretos

cp seu_site.key seu_site.key.insecure /etc/ssl/private/
cp seu_site.crt /etc/ssl/certs/


Agora vamos partir para a configuração do Apache

Habilite o módulo de ssl para o Apache

sudo a2enmod ssl


crie mais um host para sua aplicação, exemplo: secure.seu_site


Adicione no arquivo de configuração do apache para este host as seguintes linhas, logo abaixo de ServerName seu_site:

SSLEngine on
SSLCertificateFile /etc/ssl/certs/seu_site.crt
SSLCertificateKeyFile /etc/ssl/private/seu_site.key



Restart o apache:

service apache2 restart


Acesso seu novo host, no navegador, assim:

https://secure.seu_site



Bom pessoal, é isso, espero que ajude, assim como me ajudou.

Abraço a todos.