Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI

Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI

Como instalar SSL em sites WordPress gratuitamente

Há algumas semanas atrás eu publiquei essa imagem em minhas redes sociais:

rafaelfunchal.com.br Conexão segura Homologado por Let's Encrypt

Graças a esses 3 projetos agora meu site tem SSL:
Easy Engine
WP-CLI
Let’s Encrypt
E ainda tem gente que não gosta do mundo Open Source 😀

Muitas pessoas perguntaram quando eu escreveria um post com o passo a passo. A resposta é: O post estará disponível em breve aqui mesmo nessa URL, porém, falarei sobre isso antes no WordCamp São Paulo 2016!

Conforme prometido, atualizei o post com o passo a passo para instalar SSL usando 3 projetos Open Source maravilhosos!

O que é SSL?

SSL/TLS (Secure Sockets Layer / Transport Layer Security) é o HTTP com uma camada adicional de segurança. Essa camada mantém a comunicação entre seu computador e o servidor de um modo seguro.

O site continua usando o protocolo HTTP, mas os dados são criptografados e descriptografados durante a comunicação.

Por que usar SSL?

Além de adicionar mais segurança ao seu site, já que os dados são criptografados, é muito importante utilizar HTTPS por esses dois motivos:

  1. O Google informou que dará preferência a sites com SSL nos resultados da busca e o Google Chrome exibirá um aviso de “site não seguro” caso não exista nenhum certificado nele;
  1. Toda matéria sobre compras na internet aconselham que os usuários não informem dados de cartão de crédito ou qualquer outra informação em sites que não tenham o cadeadinho na barra de endereço do navegador.

Isso significa que, caso seu site não seja carregado com HTTPS, ele não será encontrado no Google e ninguém terá confiança em comprar em sua loja online.

Projetos Open Source

Como eu citei no título do post, utilizaremos 3 projetos Open Source para instalar um certificado SSL no nosso site:

Let’s Encrypt

A comunidade Open Source se reuniu para resolver esses problemas e assim nasceu o Let’s Encrypt, um projeto mantido por dezenas de empresas (entre elas a Automattic), que concede certificados gratuitamente!

Os certificados gerados pelo Let’s Encrypt têm validade de 90 dias e devem ser renovados para que continuem funcionando corretamente.

O único requisito é que seu site seja instalado em um VPS, já que é necessário ter acesso SSH para fazer as configurações.

Caso seu site esteja usando um servidor compartilhado, é necessário contratar os certificados disponibilizados por sua hospedagem, mas eu acredito que migrar para um VPS pode te trazer muitas melhorias.

EasyEngine

O EasyEngine é uma interface de linha de comando que facilita o gerenciamento de servidores e é capaz de criar instalações otimizadas do WordPress, por exemplo, com apenas uma linha de comando.

Escrevi sobre ele no começo desse ano aqui mesmo no meu blog.

WP-CLI

O WP-CLI é uma interface de linha de comando, que é instalada automaticamente pelo EasyEngine, que torna mais rápido o gerenciamento de sites WordPress em VPS.

Instalando o SSL

Como eu comentei antes, é necessário ter acesso ao seu servidor por SSH.

Para começar, vamos instalar o EasyEngine em seu servidor.

O primeiro passo é acessar o servidor usando SSH e depois rodar o seguinte comando:

wget -qO ee rt.cx/ee && sudo bash ee

Isso fará o download e instalação do EasyEngine (EE) em seu servidor.

Agora podemos criar uma instalação WordPress rodando esse comando (substituia meusite.com.br por seu próprio domínio):

ee site create meusite.com.br --wpfc --letsencrypt

Pronto! você acabou de instalar o WordPress usando Nginx, cache do Nginx, php5-fpm, MariaDB e Let’s Encrypt.

Se você já tem um site criado com o EasyEngine, é possível instalar o Let’s Encrypt nele usando esse comando:

ee site update meusite.com.br --letsencrypt

O EasyEngine se encarregará de criar um CRON para renovar seu certificado a cada 90 dias.

Depois de criar e instalar o certificado, é necessário atualizar as URLs de HTTP para HTTPS.

O modo mais simples de fazer isso é usando o WP-CLI:

wp search-replace 'http://meusite.com.br' 'https://meusite.com.br'

Muito mais fácil do que fazer manualmente diretamente no banco de dados, não é?

É isso (sim, é só isso mesmo!). Agora você tem um site WordPress rodando SSL oferecido pelo Let’s Encrypt e, graças ao mundo Open Source, você gastou apenas alguns minutos para fazer isso.

Instalando apenas o Let’s Encrypt

Caso você não queira instalar o EasyEngine em seu servidor, você pode instalar apenas o Let’s Encrypt:

sudo apt-get install lets-encrypt

E depois gerar o certificado usando esse outro comando:

lets-encrypt meusite.com.br

Os slides apresentados no #WordCampSP e no #WordCampPOA já estão disponíveis no SlideShare e Speaker Deck.

25 comentários

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

  1. Funchal. Não sei o motivo, mas o código que você postou está faltando um sinal de “-” antes das features escolhidas para cada domínio.

    O correto seria: ee site create dominio.com.br –wpfc –letsencrypt

  2. Participei do WordCamp SP 16 e 17 e assisti sua palestra sobre o tema aqui descrito Rafael. Só tenho que lhe parabenizar pelo mesmo.
    Estava lendo seu blog, e me pintaram algumas dúvidas. Se você puder me ajudar com as mesmas, lhe agradeço.

    1) Não vi nos comandos a instalação do Varnish. Quando trabalhamos com o Nginx e o cache do mesmo, não é necessário usar o Varnish?

    2) E quanto aos e-mails? Para utilizar, por exemplo, o Zoho Mail, tenho que fazer os apontamentos MX. Trabalho com hospedagem compartilhada onde tenho um gerenciador de DNS para essa finalidade. Em um servidor Cloud ou VPS, como fazer esse gerenciamento/apontamento? Tem algum link de dica de como gerenciar isso?

    3) O comando ee site create example.com –mysql cria um site com php e base mysql. Para criar um site com PHP 7 e base mysql, devo usar o comando ee site create example.com –wp –php7 correto?

    Quando tenho um site (VPS ou Cloud), como fica a questão de segurança, ataque, atualização do SO, e principalmente backup e/ou restore? Tenho alguns clientes em servidor compartilhado. Quero migrar por motivos óbvios para um VPS ou Cloud, todavia, um dos receios que tenho é de perder site de cliente ou ficar fora do ar, por atualizar algo de forma incorreta no SO ou mesmo sofrer um ataque e perder tudo. Esse risco existe ou as empresas cuidam dessa parte (Backup e atualização do Linux)?

    Agradeço sua atenção desde já.

    • Oi, Gustavo!

      Valeu por comentar 🙂

      1) Não vi nos comandos a instalação do Varnish. Quando trabalhamos com o Nginx e o cache do mesmo, não é necessário usar o Varnish?

      Como comentei no post sobre a instação com o EasyEngine, o cache que ele instala automaticamente é do próprio Ngninx. Você pode ler o post nesse link:

      https://rafaelfunchal.wpcomstaging.com/blog/tutoriais/configurando-um-vps-com-easyengine/

      2) E quanto aos e-mails? Para utilizar, por exemplo, o Zoho Mail, tenho que fazer os apontamentos MX. Trabalho com hospedagem compartilhada onde tenho um gerenciador de DNS para essa finalidade. Em um servidor Cloud ou VPS, como fazer esse gerenciamento/apontamento? Tem algum link de dica de como gerenciar isso?

      Configurações de DNS não são feitas diretamente com o EasyEngine, mas todos as empresas que conheço que oferecem serviços de VPS disponibilizam um painel para gerenciar DNS.

      3) O comando ee site create example.com –mysql cria um site com php e base mysql. Para criar um site com PHP 7 e base mysql, devo usar o comando ee site create example.com –wp –php7 correto?

      Acho que você confundiu os comandos aí. No primeiro você cita um site comum e no outro um WordPress. Vale a pena dar uma olhada na documentação do comando site create nesse link:

      https://easyengine.io/docs/commands/site/create/

      Quando tenho um site (VPS ou Cloud), como fica a questão de segurança, ataque, atualização do SO, e principalmente backup e/ou restore?

      Como os VPS são administrados por quem o contrata, esses questões ficarão sob sua responsabilidade ou na de quem você contratar para gerenciar seus servidores para você.

  3. Boa tarde Rafael,
    Como estou utilizando um Cloud Server que já tem praticamente tudo instalado, não foi necessário eu instalar o EasyEngine para criar meus sites wp.
    Sendo assim, preciso agendar no CRON a renovação do certificado, visto que essa tarefa seria feita automaticamente pelo EasyEngine.
    Você possui algum link ou dica de qual sintaxe devo utilizar nesse agendamento (Crontab) para renovar após 90 dias o certificado SSL automaticamente?
    Lhe agradeço desde já.
    Abraço.

  4. Muito obrigado, ajudou bastante na configuração do meu certificado. Estou usando a hospedagem da Hostinger, e acompanhando os tutoriais que eles postam no site, mas suas dicas me ajudaram bastante. Valeu.

  5. Olá Rafael

    Eu estava instalando o SSL, e digitei o comando que você disse: wp search-replace ‘http://meusite.com.br’ ‘https://meusite.com.br’

    E deu o seguinte erro no meu servidor: Error: YIKES! It looks like you’re running this as root. You probably meant to run this as the user that your WordPress install exists under.

    If you REALLY mean to run this as root, we won’t stop you, but just bear in mind that any code on this site will then have full control of your server, making it quite DANGEROUS.

    If you’d like to continue as root, please run this again, adding this flag: –allow-root

    If you’d like to run it as the user that this site is under, you can run the following to become the respective user:

    sudo -u USER -i -- wp <command>
    

    O que eu posso fazer ?

    Atenciosamente, Murilo.

    • Oi, Murilo.
      Obrigado por comentar 😉

      Conforme mencionado no próprio texto que você colou, é possível rodar o código como root adicionando a flag –allow-root so final do comando.

      Outra possibilidade é adicionar o WP-CLI ao usuário root do servidor rodando o outro comando sugerido.

        • Dê uma olhada novamente no comando que você colou aqui. Ele é diferente do comando informado no texto que você colou.

          Só para esclarecer. Você precisa adicionar o –allow-root no final do comando que estiver rodando, não apenas ele.

          Se o CLI não achou a instalação do WP, provavelmente você está rodando o comando na pasta errada do terminal. Então precisará descobrir qual a pasta correta em que seu WP está instalado, navegar até ela com cd e depois rodar o search replace de novo.

  6. Bom dia Rafael Funchal
    Véio eu sei que está publicação é antiga, pois tem exatos 2 anos que fui na sua palestra no WordCampSP, mas como uso sempre seu site como referência para lembrar o nome do instalador automático do WP, eu vi que os comandos não estavam funcionando, então fui dar uma olhada.
    Os corretos agora são:
    ee site create example.com –wpfc –php7 –letsencrypt – Caso queira usar o PHP7
    ee site create example.com –wpfc –letsencrypt – Com PHP5.6
    Abraço e sucesso!

Descubra mais sobre Rafael Funchal

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue reading