Instalando certificado de segurança SSL

- 5 mins

O SSL (Secure Socket Layer) é um protocolo desenvolvido para elevar a segurança dos dados transmitidos pela internet. O SSL pode ser usado em vários serviços, sendo que o mais comum é o acesso à páginas web.

Introdução

Antes de tudo. O que é SSL?

SSL (Secure Socket Layer) é um protocolo desenvolvido para elevar a segurança dos dados transmitidos pela internet. O SSL pode ser usado em vários serviços, sendo que o mais comum é o acesso à páginas web. Neste caso o endereço dos recursos acessados passa a ser feito no formato: https://website.

As conexões via SSL são particularmente recomendadas para envio de informações como números de cartão de crédito, senhas e qualquer outra informação sigilosa via internet.

O SSL faz uso de criptografia para garantir o sigilo das informações transferidas entre o navegador do usuário e o servidor web. Como consequência, mesmo que as informações sejam interceptadas elas não podem ser lidas sem que sejam descriptografadas.

O que é um certificado SSL?

O certificado SSL tem a função de certificar que o site que você está acessando é realmente ele mesmo. Este processo é realizado por empresas que emitem certificados SSL. Elas fazem a validação do domínio e, dependendo do tipo de certificado, também da entidade detentora do domínio.

Sempre que você acessa uma página segura, isto é, protegida por um certificado SSL, é apresentada uma chave ou um cadeado na barra de status para indicar a comunicação segura. Os certificados tradicionais exigem que você clique na chave ou cadeado para ter acesso às informações do detentor do certificado SSL.

Texto retirado do site: centralserver.com.br clique aqui para visualizar o texto completo.

O domínio leonardorifeli.com possuí o certificado SSL COMODO 256bits. Efetuei a compra do certificado por fins didáticos (estudos para configuração). Estarei demonstrando como efetuei a instalação do certificado no servidor.

Obs.: Salientando que não demonstrarei como efetuar a compra/solicitação do certificado.

Informações

Sistema Operacional (servidor): Ubuntu Server 14.04; Dependências: apache2, openssl e ssl-cert;

Dependências

As depências são os recursos/bibliotecas utilizadas para a gerar e configurar o certificado. Faça acesso SSH com o servidor, utilizando privilégios de root (oh my god! Yes!).

Execute os comandos abaixo para atualização de dependências já instaladas. Posteriormente, certifique-se que: apache2, openssl e ssl-cert encontram-se instalados no ambiente.

apt-get update apt-get upgrade apt-get install apache2 openssl ssl-cert

Gerando as chaves

Criando o diretório onde os certificados serão armazenados.

mkdir /etc/apache2/ssl/

Acessando o diretório dos certificados.

cd /etc/apache2/ssl/

Gerando as chaves. Atente-se leia os descritivos abaixo antes de acionar enter.

openssl req -nodes -newkey rsa:2048 -keyout dominio.com.key -out dominio.com.csr

Primeiro entenderemos o que o comando acima executará.

O comando em questão irá gerar o arquivo dominio.com.key, o qual contém a chave privada e não deverá em hípotese alguma, ser fornecido há alguém.

De imediato, certifique-se de fazer o backup da chave privada (dominio.com.key), pois não há meios de recuperá-la. A chave privada é utilizada como entrada no processo para gerar um “Pedido de Assinatura de Certificado (CSR)”. O CSR é um arquivo contendo as informações da solicitação do certificado (logo você preencherá algumas informações), incluindo sua chave pública.

Agora que foi informado a função do comando citado, pode acionar enter, logo você preencherá as informações para o certificado:

Veja como as perguntas serão feitas e como respondê-las:

Country Name (2 letter code) [AU]: BR State or Province Name (full name) [Some-State]: SP Locality Name (eg, city) []: Araraquara Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nome da empresa (deixe em branco caso não possua) Organizational Unit Name (eg, section) []: Cargo na empresa (deixe em branco caso não possua) Common Name (eg, YOUR name) []: dominio.com Email Address []: [email protected] Please enter the following ‘extra’ attributes to be sent with your certificate request A challenge password []: aperte enter (deixar em branco) An optional company name []: aperte enter (deixar em branco)

Após a finalização, o arquivo dominio.com.key será criado. Deixe-o com permissão de acesso 600.

chmod 600 dominio.com.key

Após finalizar, certifique-se que dois arquivos foram criados, dominio.com.key e dominio.com.csr. Lembre-se que o conteúdo do arquivo “dominio.com.csr” deve ser utilizado para finalizar a solicitação de registro do certificado (colar no campo “Enter CSR”). Efetuei a compra no site Comodo.

Pegando o conteúdo do arquivo dominio.com.csr.

cat dominio.com.csr

Após finalizar a compra, o provedor do certificado envia os seguintes arquivos para serem instalados no servidor:

  1. Root CA Certificate: AddTrustExternalCARoot.crt
  2. Intermediate CA Certificate: AAddTrustCA.crt
  3. Intermediate CA Certificate: DomainValidationSecureServerCA.crt
  4. Your PositiveSSL Certificate: (dominio).crt

PS: A empresa Comodo enviou os arquivos acima via e-mail. Lembre-se, guarde-os com segurança.

Faça upload dos arquivos no diretório, /etc/apache2/ssl.

Os três primeiros arquivos serão utilizados para gerar o arquivo que será utilizado pelo Apache (criar arquivo com extensão ”.ca-bundle”). Mergeie (mesclar, juntar) os conteúdos em um único arquivo com nome “dominio.ca-bundle, utilizando o comando.

cat AAddTrustCA.crt DomainValidationSecureServerCA.crt AddTrustExternalCARoot.crt > www.dominio.com.ca-bundle

Configuração no Apache

Com o arquivo .ca-bundle criado, efetuaremos a configuração no arquivo .conf do respectivo domínio (no apache).

cd /etc/apache2/sites-available nano arquivo-configuracao-utilizado.conf

Segue abaixo um modelo em funcionamento (você poderá utilizá-lo como base).

Configuração da porta 80 para redirecionar os acessos http para https, porta 443;

<VirtualHost *:80> ServerAdmin [email protected] ServerName dominio.com ServerAlias www.dominio.com RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost>

Configuração da porta 443, onde o site funcionará (acesso https);

<VirtualHost *:443> ServerName www.dominio.com:443 ServerAdmin [email protected] ServerName dominio.com ServerAlias www.dominio.com DocumentRoot /var/www/website DirectoryIndex index.php index.htm index.html TransferLog /var/log/apache2/website.log SSLEngine on SSLCertificateKeyFile /etc/apache2/ssl/www.dominio.com.key SSLCertificateFile /etc/apache2/ssl/www.dominio.com.crt SSLCertificateChainFile /etc/apache2/ssl/www.dominio.com.ca-bundle ServerSignature off <Directory "/var/www/website"> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

Após finalizar a configuração.

service apache2 restart

Caso dê algum erro, verifique os logs (pois é para isso que eles existem). Brincadeiras, entre em contato, ficarei feliz em dar auxilio na medida do possível.

Conclusão

A utilização de certificado de segurança em sites/sistemas que possuem tráfego de informações privilegiadas é imprescindível. Portanto, certifique-se que as informações contídas nas áreas restritas, encontram-se seguras.

Espero ter-lhe auxiliado em algum aspecto. Até o próximo post.

Leonardo Rifeli

Leonardo Rifeli

I'm a brazilian 🇧🇷 Data Engineering. Co-founder & CTO at Harmo.

comments powered by Disqus
rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora