Certificados digitais é um dos mecanismos utilizados para verificarmos a integridade de um website. Ao acessarmos um website o navegador de internet (comummente chamado de browser) verifica se o mesmo possui um certificado, e caso possua o navegador verifica quem emitiu e quem assinou o certificado.
De forma simplificada os certificados digitais funcionam da seguinte maneira, ele primeiro o certificado é emitido por uma entidade (pessoa singular, empresa ou outro tipo de instituição) e depois o mesmo é assinado por um terceiro que da a “garantia” de que este website é de confiança.
A Let’s Encrypt é uma entidade que assina certificados digitais, tal como ela existem várias como a Symantec, Comodo, GoDaddy, etc., a assinatura de um certificado digital é geralmente um serviço pago fornecido por estas empresas, no caso da Let’s Encrypt o serviço é fornecido de forma gratuita.
Vou agora demonstrar como fazer para instalar o cliente Let’s Encrypt no Debian/Ubuntu e emitir um certificado digital para um website que esta hospedado num servidor com diferente, neste caso a instalação do certificado no website será feita pelo painel cPanel utilizado para administrar o website.
Para instalar o programa no Debian ou Ubuntu devemos instalar o seguintes pacotes.
[php]$ sudo apt-get install certbot[/php]
Agora que já temos o certbot instalado vamos confirmar se o mesmo funciona usando o seguinte comando.
[php]$ sudo certbot -h[/php]
Neste caso aparecera a mensagem com os comandos que podemos utilizar para criar ou gerir os certificados.
Agora vamos criar o certificado digital para o domínio fictício “example.org”. Neste caso vamos utilizar um recurso disponível nas novas versões do certbot que é a possibilidade de emitir certificados wildcard, ou seja certificados que funcionam para mais de um serviço dentro do mesmo domínio. Os certificados deste tipo permitem que o mesmo certificado seja utilizado em diferentes websites dentro do mesmo domínio ou em diferentes serviços, por exemplo um certificado emitido para o domínio “*.example.org” pode ser utilizado para os websites “www.example.org”, “blog.example.org”, “empregos.example.org” e etc.
Nota: Esta função só está disponível a partir da versão 0.22 ou superior.
Podemos verificar a verão disponível nos repositórios oficiais com o seguinte comando.
[php]$ apt-cache show certbot
Package: certbot
Source: python-certbot
Version: 0.22.2-2
Installed-Size: 52
Maintainer: Debian Let’s Encrypt <letsencrypt-devel@lists.alioth.debian.org>
Architecture: all
Replaces: letsencrypt
Provides: letsencrypt
[/php]
Agora vamos começar com a criação do certificado, para isso vamos usar a opção “certonly”, também devemos especificar a opção “–manual” porque o website que irá utilizar o certificado não esta na mesma máquina em que o certificado esta a ser emitido. O certificado que será criado será posteriormente instalado em outra máquina com acesso ao cPanel.
[php]$ sudo certbot certonly –manual -d *.example.org –cert-name example.org –server https://acme-v02.api.letsencrypt.org/directory[/php]
Nota: a opção “–server” deve ser utilizada porque a emissão de certificados wildcard ainda está em fase de testes, mas num futuro próximo ela estará disponível no serviço padrão sem a necessidade de especificar o servidor alternativo.
Na emissão do primeiro certificado serão pedidos dados como e-mail e nome que mais tarde serão utilizados para confirmar a sua identidade.
[php]
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for example.org
——————————————————————————-
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you’re running certbot in manual mode on a machine that is not
your server, please ensure you’re okay with that.
Are you OK with your IP being logged?
——————————————————————————-
(Y)es/(N)o:
[/php]
A pergunta acima é um aviso relacionado ao facto de registarem as informações do IP publico e as operações feitas relacionadas ao certificado. Neste caso podemos responder com “Y” e continuar a instalação.
[php]
——————————————————————————-
Please deploy a DNS TXT record under the name
_acme-challenge.example.org with the following value:
fgvGWYPnwRkXw0orBbrk5xK15ty2BBmpyrblLXluKjI
Before continuing, verify the record is deployed.
——————————————————————————-
Press Enter to Continue
[/php]
Esta é a parte crucial do processo, a parte da verificação de que o requerente é mesmo o proprietário ou administrador do domínio. Neste caso ele pede para que se crie um registo DNS do tipo “TXT” como nome “_acme-challenge.example.org” e que o conteúdo do mesmo seja a sequencia de letras e números indicados acima. Neste caso iremos agora para o nosso cPanel criar o regrito.
No painel cPanel vamos selecionar a opção “Zone Editor”.
De seguida iremos selecionar a opção “Manage” no domínio que estamos a criar o website. A seguir iremos escolher as opção “Add Record” e vamos preencher com os dados que nos foram indicados no passo anterior.
Agora podemos voltar a tela anterior e pressionar a tecla “Enter” para confirmar a validação do nosso domínio e proceder com a emissão do certificado.
Após a confirmação do domínio e a criação do certificado alguns arquivos serão criados, nestes arquivos contém as informações que compõem o nosso certificado. Estes arquivos por padrão são criados no diretório “/etc/letsencrypt/live/example.org”. Neste caso iremos agora voltar ao cPanel e copiar o conteúdo destes arquivos na área de “Security -> SSL/TLS”, nesta pagina iremos escolher a opção “Manage SSL sites.”, nesta pagina iremos escolher o domínio desejado e clicar na opção e copiar o conteúdo dos arquivos nas respetivas caixas de texto.
[php]/etc/letsencrypt/live/example.com/cert.pem -> Certificate: (CRT)
/etc/letsencrypt/live/example.com/privkey.pem -> Private Key (KEY)
/etc/letsencrypt/live/example.com/chain.pem -> Certificate Authority Bundle: (CABUNDLE)
[/php]
E por ultimo clicar na opção instalar certificado. Agora o nosso certificado digital está instalado, para confirmar podemos acessar o website e confirmar a presença de um pequeno cadeado verde na barra de endereço.
Também podemos ver que um certificado Let’s Encrypt foi utilizado no website “www.rickinho.com”.
Espero que o artigo tenha sido útil e até a próxima.
Referências:
[php]https://letsencrypt.org/
https://certbot.eff.org/docs/install.html[/php]