Neste tutorial vamos mostrar como comprar e configurar um certificado COMODO de apenas 9 dólares anuais que pode ser usado em seu site. Recentemente o Google alterou o mecanismo de indexação de buscas privilegiando sites https (que tenham certificado de segurança).
Hoje em dia existem várias empresas que vendem certificações digitais para sites, elas oferecem uma grande variedade para diversas aplicações. Neste artigo falaremos sobre o COMODO Positive SSL de domínio único. Esse tipo de certificado é muito usado para sites que necessitam um endereço https, seja para indexar melhor no Google ou para oferecer login seguro aos usuários.
Explicaremos os procedimentos para instalar os arquivos enviados pelo COMODO, configurando o site para forçar a criptografia em todas as páginas a partir do domínio principal (mostrarei as diretivas NginX de como fazer isso). E, como um bônus, iremos configur o certificado para conseguir classificação Grade A+, defendendo o servidor contra o famigerado Logjam Attack.
Neste tutorial indicarei o serviço da NameCheap, onde tenho os meus domínios registrados, eles são mundialmente reconhecidos por venderem domínios/certificados a preços baixos, fornecendo um suporte de qualidade além de rapidez em transferências e serviços (Quando transferi o domínio do Fator Binário da Hostgator para a NameCheap o processo todo levou menos de 2 horas, incluindo as verificações pelo ICANN).
1 Adquira o certificado (ou se já tiver um poderá usá-lo):
A Eu indico a NameCheap para comprar o certificado de $9 dólares. Cadastre-se com eles, caso não tenha conta lá, usando este link https://www.namecheap.com/security/ssl-certificates.aspx
B Após cadastrar-se clique neste link para ir à página de certificados. A primeira opção é o COMODO PositiveSSL de U$ 9 dólares/ano, clique em “Add to Cart“. Após isso siga as instruções de pagamento.
C Antes de validarmos o certificado temos que gerar um arquivo CSR no servidor que será necessário para a validação do mesmo, mas antes de digitar os comandos observe que:
» O seu domínio não poderá estar com as informações de Whois protegidas, desabilite o Whois Protect/Guard antes de solicitar a validação.
» As informações digitadas na geração do arquivo CSR devem ser as mesmas registradas junto ao seu domínio.
» Execute os procedimentos abaixo no servidor em que o certificado será instalado.
» Substitua fatorbinario.com pelo seu domínio e observe atentamente todos os detalhes.
> mkdir -p /etc/nginx/ssl/fatorbinario_com/ > cd /etc/nginx/ssl/fatorbinario_com/ > openssl req -new -newkey rsa:2048 -nodes -keyout fatorbinario_com.key -out fatorbinario_com.csr *Ao escrever as informações abaixo não utilize acentos, caracteres especiais ou pontuação e substitua todos os campos pelos do registrado no seu domínio *Nos campos Organization e Organization Unit pode-se digitar o seu próprio nome se não tiver empresa *No campo Common Name escrever o domínio do site com o www (existe diferença entre usar com www e sem então preste atenção) » Country Name (Código do País):<-- BR » State or Province Name (Nome do seu Estado):<-- Sao Paulo » Locality Name (Cidade):<-- Sao Paulo » Organization Name (Nome da sua Empresa):<-- Minha Empresa Ltda » Organization Unit Name (Setor da Empresa):<-- TI » Common Name (O seu dominio com o "www"):<-- www.fatorbinario.com » Email Address (Seu endereço de email):<-- [email protected] » A challenge password (senha):<-- <pode deixar em branco> » An optional company name (Nome fantasia da Empresa):<-- <pode deixar em branco> O procedimento acima irá gerar 2 arquivos: - fatorbinario_com.csr - fatorbinario_com.key Copie todo o conteúdo do arquivo com extensão .csr (fatorbinario_com.csr) e cole-o no formulário de validação do certificado na NameCheap, quando solicitado. Talvez seja necessário enviar o arquivo .key para eles também, se solicitado.
**Comprando este tipo de certificado na NameCheap não é necessário enviar cópias de documentos.
**Após o seu certificado ser aprovado e emitido você receberá os arquivos que iremos copiar para o servidor.
2 Copie e configure o certificado:
A Após ser aprovado você receberá os seguintes arquivos (se o .key não for emitido junto pode-se usar o que ficou no servidor):
- AddTrustExternalCARoot.crt - COMODORSAAddTrustCA.crt - COMODORSAOrganizationValidationSecureServerCA.crt (ou COMODORSADomainValidationSecureServerCA) - www.fatorbinario.com.key - www_fatorbinario_com.crt
* É provável que a NameCheap só disponibilize um arquivo zipado com 3 arquivos, se for este o seu caso então no próximo passo use a segunda opção de concatenar os arquivos.
B Copie todos os arquivos para o diretório que criamos no passo 1C (/etc/nginx/ssl/fatorbinario_com). Em seguida acesse o diretório, nós vamos precisar concatenar alguns destes arquivos para formar um “chainlink” entre eles de modo que não apresente erros.
> cd /etc/nginx/ssl/fatorbinario_com #Execute o proximo comando com os 3 arquivos nesta ordem apresentada > cat www_fatorbinario_com.crt COMODORSAOrganizationValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > ssl-bundle.crt ATENÇÃO: Caso a Namecheap só tenha fornecido o arquivo compactado com 3 arquivos é porque o bundle da Comodo já estará pré-concatenado bastando somente concatená-lo desta maneira: > cat www_fatorbinario_com.crt www_fatorbinario_com.ca-bundle > ssl-bundle.crt * A Goddady envia 2 arquivos também, proceda da mesma maneira explicada neste último parágrafo Para o certificado do SITE BLINDADO concatene da seguinte maneira: > cat www_fatorbinario_com.crt SSLBlindado2.crt USERTrustRSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl-bundle.crt
C Nos próximos comandos vamos gerar o arquivo dhparams.pem que usaremos no NginX para prevenir ataques Logjam (a geração da chave poderá levar uns 5 minutos)
> cd /etc/ssl/private > openssl dhparam -out dhparams.pem 2048 > chmod 600 dhparams.pem
3 Configure o NginX para forçar o certificado no site todo com parâmetros adicionais para conseguir classificação A+:
A Adicione as diretivas NginX para o certificado. No ISPConfig clique em “Sites / Selecione o site na lista / Aba Opções“, e na caixa de diretivas NginX adicione o seguinte código acima das outras diretivas existentes:
*Substitua fatorbinario_com pelo seu domínio.
listen 443 ssl; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_certificate /etc/nginx/ssl/fatorbinario_com/ssl-bundle.crt; ssl_certificate_key /etc/nginx/ssl/fatorbinario_com/fatorbinario_com.key; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/private/dhparams.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
B Teste o certificado. Após salvar as diretivas no ISPConfig aguarde pelo menos 1 minuto e acesse este link (https://www.ssllabs.com/ssltest/), digitando o domínio a verificar na caixa de textos. Aguarde alguns minutos e veja o resultado, se não conseguir A+ podemos ajudar a encontrar o motivo. Em seguida acesse o seu site com “https://” e veja se está ok.
C Se você estiver usando WordPress substitua as URLs do site. Em “Configuração / Geral” substitua o http por https nos campos “Endereço do WordPress” e “Endereço do Site“. *Testou o https antes de fazer este passo né? Muito bem.
D Agora já podemos “forçar” o certificado para o site todo (tenha certeza que todos os testes passaram), insira a próxima diretiva ao final de todas as outras (como usaremos “return” dará problemas inserir antes):
*Note que usamos “return 301” aqui, mas é aconselhável usar “return 302” (não permanente) até o site estar testado e funcionando como deveria.
#Deixar esta diretiva sempre por ultimo na caixa de diretivas e somente se nao tiver a tabela DNS pela CloudFlare, pois pode-se configurar forcando o https por la if ($scheme = http) { return 301 https://$host$request_uri; }
No ISPConfig existe uma opção SSL para cada site, não precisa marcar nada lá e nem preencher os dados na aba SSL, com o método acima a configuração foi feita manualmente.
O plugin WooCommerce tem uma opção de forçar o SSL, em nossos testes foi necessário desativá-lo pois já configuramos o certificado globalmente para o site no NginX.
Esse tipo de certificado não funciona para subdomínios.
Caso a sua tabela DNS esteja na CloudFlare e o seu site for Magento ou outra loja virtual que requer certificado SSL no servidor, então ative as nuvens (deixando em laranja) e na aba “Crypto” da CloudFlare configure o SSL para “Full (Strict)”. Mas somente ative as nuvens depois de testar o certificado.