No artigo anterior, ensinei a instalar o Ghost na Nuvem. Hoje abordarei uma configuração importante após finalizar o processo de instalação. Cada vez que você digita sua senha para ter acesso ao painel administrativo de seu site, o navegador envia essa senha para o seu servidor, para que ele autentique seu acesso ao sistema. Se você não utiliza nenhuma criptografia nesse processo, seu navegador irá enviar a senha em formato texto puro (“plain text”), o que significa que qualquer um poderá ver sua senha, caso esteja utilizando uma técnica chamada de “sniffing”. Isso é particularmente problemático caso essa pessoa esteja na mesma rede que você, principalmente em locais com acesso wifi público, como cafeterias, lan-houses etc.
Por isso mesmo, é essencial ativar a criptografia SSL/TLS na tela de login de seu site Ghost, fazendo com que o envio da senha ocorra de forma criptografada. Para isso, você precisará de um certificado SSL. Há diversos fornecedores no mercado e os preços variam bastante. Na prática, todos eles fornecem o mesmo nível de segurança, independentemente de quem tenha vendido o certificado para você. O maior diferencial se encontra nas classes (1, 2, 3) dos certificados que podem ser adquiridos.
Há também a possibilidade de criar um certificado autoassinado ou mesmo de adquiri-lo sem nenhum custo em instituições como a CaCert. O único problema é que alguns navegadores não possuem o certificado raiz da CaCert instalado por padrão, o que faz com que o navegador exiba aquela tela de “site inseguro”, ao acessar uma página com “https” com esses certificados. O mesmo acontece com os certificados autoassinados.
![Exemplo de certificado inseguro no Chrome.](https://static.imasters.com.br/wp-content/uploads/2014/09/ssl-inseguro-chrome-620x303.png)
![Exemplo de alerta de certificado no Firefox.](https://static.imasters.com.br/wp-content/uploads/2014/09/ssl-inseguro-firefox-620x355.png)
No meu caso, optei por utilizar SSL apenas na tela de login, de forma a proteger o envio da senha sem comprometer a carga no servidor. Como não temos o objetivo de utilizar o certificado para checar a autenticidade do site, não haveria problema em utilizar um certificado autoassinado ou emitido pela CaCert. No nosso caso, um certificado classe 1 é mais do que suficiente, e normalmente permite sua utilização nas versões nossodominio.com.br e www.nossodominio.com.br.
Também não abordarei aqui a criação do certificado, mas sua instalação e configuração no Ghost. Mãos à obra!
Instalação do certificado
A esta altura, você já deve ter 2 arquivos (um do certificado e outro da chave) com diferentes extensões: meusite.crt e meusite.pem. Nomeie os arquivos de forma a identificar para qual site eles pertencem, isso será útil caso você tenha mais de um site instalado no mesmo servidor.
Crie a pasta /etc/nginx/ssl e salve os arquivos nela. Eu costumo utilizar sftp por considerar mais simples e seguro do que um ftp convencional. Depois que os arquivos estiverem salvos nessa pasta, é hora de habilitar o tráfego https no Nginx.
- Abra o arquivo de configuração com o editor da sua preferência (eu costumo usar o vim, mas você pode usar o nano):
vim /etc/nginx/sites-available/default - Encontre a seção intitulada “HTTPS server” que encontra-se toda comentada.
- Retire os # do início da linha e edite as configurações de forma que elas fiquem semelhantes ao exemplo abaixo:
server { listen 443 ssl; server_name SEUDOMINIO.com.br www.SEUDOMINIO.com.br; root html; index index.html index.htm; ssl_certificate /etc/nginx/ssl/SEU_CERTIFICADO.crt; ssl_certificate_key /etc/nginx/ssl/SUA_CHAVE.pem; ssl_session_timeout 15m; ssl_protocols SSLv3 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:2368; } }
Atente para a substituição do endereço do seu domínio no campo server_name e no nome dos arquivos .pem e .crt que você salvou no diretório /etc/nginx/ssl. Eu também me limitei a utilizar apenas as versões mais recentes dos protocolos SSL e TLS. Agora basta reiniciar o Nginx:
# sevice nginx restart
Configuração do Ghost
Depois de configurado nosso servidor web, é a vez de dizermos ao Ghost que ele deve utilizar o protocolo https para a tela de login. Fazemos isso editando o arquivo config.js que, no nosso caso, encontra-se na pasta /var/www. Par isso, basta acrescentar a opção forceAdminSSL: true dentro da seção production.
Depois de salvar o arquivo, reinicie o Ghost. Ao acessar a URL seudomínio.com.br/ghost, você verá que a requisição será redirecionada para o tráfego HTTPS e o navegador normalmente exibirá um cadeado ao lado do endereço. Pronto! Sua tela de login já está bem mais segura do que anteriormente.