Fork me on GitHub
Você esta em:Home » Desenvolvimento » Instalando o SSL (Certificado de Segurança) no EC2 do Amazon Webservices

Instalando o SSL (Certificado de Segurança) no EC2 do Amazon Webservices

Tutorial passo a passo de como se instalar o certificado de segurança numa instancia EC2 da Amazon Webservices

Olá pessoal,

Bem hoje me deparei com a seguinte missão, instalar um certificado de segurança no EC2. Abaixo detalharei passo a passo de como instalar e configurar um certificado.

Pré requisitos:

  • Bons conhecimentos em Linux
  • Conhecimentos no funcionamento do EC2 e Firewall
  • Inglês intermediário

Bem para o Tutorial utilizarei o serviços da rapidssl (http://www.rapidssl.com/) por ser mais rápido rs

Primeiro passo:

Primeiramente ativei o super usuário do Linux com o comando:

$sudo su

Depois instalei o openssl com o comando:

$yum install openssl openssl098e

OBS: Ele terá umas dependências então num momento irá perguntar se quer instalar elas tb.

Depois crie uma pasta dentro da pasta /usr/share/nginx/ para guardar os certificados. A minha coloquei como certificado-2048 e entre nela

Obs: Usei o caminho acima para me organizar, mas pode ser em qualquer pasta que lembre. E como uso o nginx coloquei numa pasta abaixo da html senão ficaria visível pelo navegador.

Depois de instalado crie a chave de 256bits assim:

$openssl genrsa -des3 -out servidor.key 2048

Obs: Se for criar uma de 128bits coloque 1024 ao invés de 2048

Após inserir o comando acima o sistema te solicitará uma pass phrase ou seja, uma senha.

Obs: Guarde essa senha e não esqueça senão terá que refazer novamente!

Depois bastará dar um ls -la que verá que foi criado o arquivo servidor.key

-rw-r–r– 1 root root 963 Nov 21 16:50 servidor.key

Obs: Guarde ele!!!!!

Agora vamos gerar o arquivo CSR apartir do servidor.key com o comando abaixo:

Importante!!!!!!!!!! Ao executar o comando abaixo ele irá solicitar varias coisas, como Pais onde vc coloca em caixa alta BR e em common name coloque o nome do dominio com o www. por exemplo: www.meusite.com.br Ele continuará pedindo outras informações do site para qual será gerado o SSL, no meu caso o A challenge password? deixei em branco rs

$openssl req -new -key servidor.key -out servidor.csr

Obs: Ele pedirá a senha que vc criou para o servidor.key.

Bem é com esse arquivo que iremos precisar para comprar nosso SSL no RapidSSL

Dê um ls -la e verá que agora tem 2 arquivos o .Key e o .CSR

Copie ele temporariamente para um lugar que vc pode acessar pelo navegador para fazer download ou faça um FTP e pegue ele.

Agora basta vc visitar o site RapidSSL e seguir os passos para solicitar a compra de um certificado. Em um determinado momento ele irá te solicitar o CSR

Edite ele e cole no RapidSSL o conteúdo desse aquivo CSR e o próprio site informará se esta tudo certo inclusive o domínio que vc escolheu

Obs: No RapidSSL ele té dará como default o certificado com as 2 opções com www e sem o www

Obs2: Você precisará ratificar a compra do certificado com o seu celular, ele irá te pedir um número de celular exe: +55 21 9203-8986 e depois vc receberá em seguida um telefonema por um robô, de início aperte # no seu cel, depois insira o numero exe: 4444 e confirme com #, se vc ouvir congratulations esta tudo certo!

Após isso vc receberá um email que precisa confirmar com o assunto:

RapidSSL Certificate Request Confirmation

Você precisa clicar no link e aprovar o certificado. (Esse email só será enviado para emails do tipo webmaster@seudominio.com.br e uns outros lá que ele tem para sua escolha)

Bem agora é só seguir uns preenchimentos de umas paradas como cartão de crédito, email principal e secundário e validar por telefone e por email que vc já já receberá um email de confirmação de pedido. Ele pede no celular que vc digite # e depois um código e novamente o # para confirmar. E também pedirá um email com o domínio que irá receber o certificado, exemplo: admin@meusite.com.br dai vc precisará entrar nesse email e confirmar a compra!

Segundo passo:

Você receberá um email que conterá umas paradas +/- assim:

visite https://gist.github.com/4129106

Lá vc verá 2 blocos:

—–BEGIN CERTIFICATE—–
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1-BLOCO1
—–END CERTIFICATE—–
INTERMEDIATE CA:
—————————————
—–BEGIN CERTIFICATE—–
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2-BLOCO2
—–END CERTIFICATE—–

O primeiro é o seu certificado CRT e o segundo é o ca bundle, ou seja, intermediário.

você terá que juntar os 2 blocos em um só arquivo. Vou explicar abaixo da forma mais complexa para vcs poderem entender:

Na primeira vc cria um arquivo chamado SSL.CRT só com o primeiro bloco, o bloco1. Adicione o —–BEGIN CERTIFICATE—– e o end tb até o ultimo – (traço)

Depois crie o INTERMEDIARIO.CRT com a parte de baixo o bloco2. Adicione o —–BEGIN CERTIFICATE—– e o end tb até o ultimo – (traço)

Obs: Não add essas partes:

CERTIFICATE
—————–
INTERMEDIATE CA:
—————————————
Pois não precisa disso, é apenas para delimitar as áreas, agora a parte como disse acima que tem o —–BEGIN CERTIFICATE—– e o —–END CERTIFICATE—– precisa add junto com seu conteúdo!

Obs: Se vc não os criou no servidor pelo Linux e usou o seu Ruindows com o bloco de notas, envie os arquivos por ftp para a pasta certificado-2048

Lá no Linux vc precisa os concatenar, assim:

cat ssl.crt intermediario.crt > seudominio.crt

Obs: Bem a pasta certificado-2048 fica em /usr/share/nginx/certificado-2048

Agora em sua pasta certificado-2048 tem 4 arquivos. O ssl.crt e o intemediario.crt que vc criou e os 3 gerados servidor.csr que não será mais usado, o servidor.key e o seudominio.crt que serão usados no próximo passo.

Entre no diretório que contém as configurações do nginx:

$cd /etc/nginx/conf.d/

E edite o arquivo correspondente ao seu dominio

$vim seudominio.conf

Adicione as seguintes linhas em seu server:

## certificado ssl inicio
listen 443; ## O Listen se duplicará mesmo, pois provavelmente vc tem um outro listem acima apontando para a porta 80 ou 8080
ssl on;
ssl_certificate /usr/share/nginx/certificado-2048/shockgames.crt;
ssl_certificate_key /usr/share/nginx/certificado-2048/servidor.key;
## certificado ssl fim

Salve e saia com :qw

Para ver se esta instalado basta digitar o seguinte comando:

$ngix -V

E você verá TLS SNI support enabled

Feito isso seu certificado já estará rodando e basta reiniciar o nginx, com:

$service nginx restart

Você verá que toda vez que restartar o nginx ele te pedirá a frase senha que vc fez lá no começo

Para remover essa frase senha faça o seguinte: Dentro da pasta certificado-2048 execute esses 2 comandos:

cp servidor.key servidor.key.bkp
cp servidor.key servidor.key.bkpGeral

Ele irá criar 2 bkps do seu arquivo key o bkpGeral é uma cópia caso de erros e assim vc terá uma Matriz

Feito isso digite o comando:

$openssl rsa -in servidor.key.bkp -out servidor.key

Irá te solicitar novamente a senha frase pela última vez e no seu console aparecerá +/- assim:

Enter pass phrase for servidor.key.bkp:
writing RSA key

Pronto, a frase foi removida, basta executar novamente o service nginx restart que vc verá que não mais solicitará a frase senha.

Para realizar um teste onde verifica se o certificado foi instalado corretamente visite:

https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=SO9556&actp=LIST&viewlocale=en_US

Pronto vc agora tem um https em seu magento no EC2!

Criando seu próprio certificado para testes

Está tudo indo bem mas aí você pensa: preciso procurar uma autoridade certificadora para gerar o meu CRT. Como sabemos os certificados têm período de validade, portanto, se você está em fase de testes, você provavelmente não quer pagar por isso.

A solução é criar o seu próprio certificado. Lógico que, como não é um certificado emitido por uma autoridade certificadora conhecida, o seu navegador vai chiar (ainda bem que ele faz isso, já pensou se não avisasse? Todo mundo emitiria seu certificado e passaria uma falsa sensação de segurança para o cliente, podendo enganá-lo para roubar seus dados). Mas para nós desenvolvedores que estamos testando, é uma verdadeira mão na roda.

Para criar o seu certificado digite o seguinte comando:

$openssl x509 -req -days 365 -in servidor.csr -signkey servidor.key -out temporario.crt

Pronto! Você acaba de criar o seu certificado válido por 365 dias (graças ao parâmetro –days 365) de nome temporario.crt . Basta agora configurá-lo no nginx.

Dica importante sobre SSL:

Tudo que entrar numa página que esta em https precisa vir de um https! E tudo que sai não precisa ser em https!

Ou seja, css, js, img precisam vir em https mas agora por exemplo se vc tiver um link que remeta para sua home page, não precisa vir em https! Vejam nesse exemplo, que o link para a home não esta em https e sim em http e não causa erro no certificado!

http://shop.pisosecarpetes.com.br/testessl.php

Certificado mais barato!

Caso queira comprar um certificado mais barato, custa em média 7usd anual visite http://www.namecheap.com/ssl-certificates/comodo/positivessl-certificate.aspx

referências:

Se não fosse a ajuda dos meus 2 brothers Marcelo Marleta e Samuel Maciel Sampaio eu não teria conseguido resolver esse problema! Mas graças a Deus possuo ótimos amigos e a reciprocidade é muito foda!!! rsrsrs

Sobre o Autor

Designer, Web Developer & Linux Administrator

Meu nome é Deivison Arthur, tenho 29 anos, sou Administrador Linux, Analista de Sistema, Webdesigner e Pesquisador. há mais de dez anos. Nasci no Rio de Janeiro, atualmente trabalho como Gerente de Tecnologia e E-commerce at Grupo FFernandes e Freelancer nas horas vagas. Desenvolvimento em Joomla, Wordpress, Drupal, Magento e outros GPLs...

Quantidade de Artigos : 114

Comentários (9)

Enviar Comentário

© 2012 Powered By Wordpress, Deivison Arthur

Ir para cima