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

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:
- 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;
- 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.
[…] São Paulo, além de ajudar com a organização, palestrei sobre Configurando SSL com Let’s Encrypt, EasyEngine e WP-CLI (olha o EasyEngine aí de […]
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
Acho que é a fonte. O hífen está adicionado duas vezes
Na verdade, o código que eu postei também mesclou os sinais hehehe. Acho que você entendeu 😉
Estou começando a achar que é algo relacionado ao Markdown do Jetpack. Depois testo isso.
Por enquanto, corrigi o texto usando code ao invés de blockquote.
Valeu pelo toque 🙂
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 🙂
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/
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.
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/
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ê.
Obrigado por seu retorno Rafael.
Vou estudar bastante sobre o assunto.
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.
Olá, Gustavo!
Isso vai depender de como você adicionou o certificado ao seu site.
Nesse caso eu acho melhor você entrar em contato diretamente com sua hospedagem e verificar qual o melhor procedimento para fazer essa renovação.
Hum…
Só rodei os comandos abaixo
sudo apt-get install lets-encrypt
lets-encrypt meusite.com.br
Parece que você já está seguindo um guia para fazer essa configuração e o problema é não saber usar o Crontab mesmo.
Segue um guia que achei aqui no Google, porém, não testei:
https://www.vivaolinux.com.br/artigo/Usando-cron-e-crontab-para-agendar-tarefas
Obrigado pela dica Rafael.
Na verdade, eu não sabia qual seria a sintaxe para renovar o SSL no Crontab.
Encontrei algo no link abaixo. Algo como ./letsencrypt renew
https://www.linuxito.com/seguridad/647-como-renovar-un-certificado-de-let-s-encrypt
Ah, sua explicação ficou parecendo que a dúvida era sobre como criar um Crontab e não sobre o Let’s Encrypt em si, mas legal que conseguiu achar
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.
Que bom que o post foi útil 🙂
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:
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.
Eu adicionei o –aloow-root
E a msg que apareceu foi a seguinte This does not seem to be a WordPress install.
Pass –path=path/to/wordpress or run wp core download.
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.
[…] falei sobre esse mesmo assunto anteriormente, mas nunca é demais divulgar a importância de carregar sites com […]
[…] Há inclusive opções gratuitas de certificados como o Let’s Encrypt que mencionei anteriormente aqui no blog. […]
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!
Valeu pelo comentário! Parece que o editor do WP trocou automaticamente hífen duplo por único e não estava rolando. Coloquei os comandos como código agora e parece ter resolvido a exibição 🙂
Esse é o comando que tenho usado na versão 4 do Easy Engine para renovar os certificados: