Categorias
Desenvolvimento Erros e soluções

Let’s Encrypt – Problem binding to port 80: Could not bind IPv4 or IPv6

Instalar um certificado SSL para ter um domínio positivo pode ser uma tarefa de simples, a menos que você enfrente um problema com o Let’s Encrypt, ele precisa usar a porta 80 e quando não consegue gera um erro com a seguinte mensagem Problem binding to port 80: Could not bind to IPv4 or IPv6, aprenda como resolver.

Antes de tudo é importante entender que neste curto post vou assumir que você já sabe como instalar o Let’s Encrypt para ter seu certificado SSL próprio e que está familiarizado com os comandos do terminal CLI.

Entendendo o problema

Para funcionar o Let’s Encrypt precisa ficar ouvindo a porta 80, mas caso outro software esteja utilizando esta porta o Let’s Encrypt simplesmente não consegue “conectar” nesta porta e cancela o processo de instalação informando o erro.

Então, tudo que precisamos fazer é descobrir quais programas estão utilizando a porta 80 e paralisa-los até que a instalação esteja concluída. E é isso! Vai lendo…

Como resolver

A primeira coisa é descobrir quais portas estão em uso, para isso vamos utilizar o comando netstat -plunt, ele vai gerar uma lista com as portas ativas, tente localizar a porta 80, só porque sou bonzinho colei a saída do netstat e marquei de negrito a porta 80, só pra você ter ideia de como fica.

[root@linode]# netstat -plunt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 3464/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 3464/dovecot
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3840/mysqld
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 3419/exim
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 3464/dovecot
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN 3876/spamd.pid -d –
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 3464/dovecot
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3562/nginx: master
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 3419/exim
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 3477/nginx: master
tcp 0 0 127.0.0.1:8084 0.0.0.0:* LISTEN 3562/nginx: master
tcp 0 0 66.228.38.249:53 0.0.0.0:* LISTEN 3439/named

Agora que identificamos qual programa está utilizando a porta precisamos para-lo, no meu caso era o nGinx que estava utilizando a porta, para para-lo preciso executar o comando especifico para ele, mas poderia ser o apache ou qualquer outro, então, caso o programa não esteja nesta lista pesquise na internet “como parar [programa x]” onde [programa x] você deve trocar pelo nome do programa que aparecer na lista 😉

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

ou

sudo service nginx start
sudo service nginx stop
sudo service nginx restart

ou

sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx restart

Depois de parado execute o comando de instalação do Let’s Encrypt, aguarde a finalização, você deverá ver uma tela como esta:

[root@linode]# sudo -H ./letsencrypt-auto certonly –standalone -d johnhenrique.com.br -d www.johnhenrique.com.br
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for johnhenrique.com.br
http-01 challenge for www.johnhenrique.com.br
Waiting for verification…
Cleaning up challenges

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/johnhenrique.com.br/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/johnhenrique.com.br/privkey.pem
Your cert will expire on 2018-09-19. To obtain a new or tweaked
version of this certificate in the future, simply run
letsencrypt-auto again. To non-interactively renew *all* of your
certificates, run “letsencrypt-auto renew”
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Reativando tudo

Tudo pronto e instalado, mas ainda é necessário reativar os serviços que você paralisou anteriormente, como você pode ter notado já deixei lá em cima o comando para parar, reiniciar e iniciar o nGinx, caso fosse o Apache você deveria utilizar httpd onde aparece nginx.

Problema com Let’s Encrypt resolvido!

Espero que você tenha resolvido seu problema com o Let’s Encrypt e a porta 80 do seu servidor, mas caso não tenha, fique a vontade para enviar nos comentários suas duvidas.

3 respostas em “Let’s Encrypt – Problem binding to port 80: Could not bind IPv4 or IPv6”

Boa tarde John,

Obrigado pelo post, me ajudou bastante. Mas ainda não consegui resolver o problema, preciso de uma luz.

Sou iniciante no mundo dos servidores. Vou tateando com tutoriais, mas não tenho um conhecimento sólido.

Meu servidor está num droplet da DigitalOcean. Ele tá rodando Ubuntu 16 / Apache. Estou tendo exatamente esse problema ao tentar renovar o certificado Let’s Encrypt. O curioso é que, ao executar o comando netstat -plunt, descobri que a minha porta 80 está sendo usada pelo nginx! Mas meu servidor é Apache! O que pode estar acontecendo? Como resolver, nesse caso, já que os comandos de stop não funcionam (retornam “Unit nginx.service not loaded”)?

Obrigado!

@ CRISTIANO
O nGinx estará usando a porta isso é normal, você precisa dar o comando para pará-lo também. Apenas com as informações que você deu, não consigo ajudar com muita coisa, em todo caso, já tentou falar com o suporte da DigitalOcean?

Falopa!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *