No post 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 blog, 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 esta 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, independente 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 auto-assinado ou mesmo de adquirí-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 auto-assinados.
Exemplo de certificado inseguro no Chrome |
Exemplo de alerta de certificado no Firefox |
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 há obra!
Instalação do certificado
A está 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 nesta 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 entitulada “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 à 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.