Quando se tenta criar um novo certificado usando o certbot, a suposição era de que 80
ou 443
precisa estar disponível, mas esse não parece ser o caso, pois:
-------------------------------------------------------------------------------
The program nginx (process ID 123454) is already listening on TCP port 443. This
will prevent us from binding to that port. Please stop the nginx program
temporarily and then try again.
-------------------------------------------------------------------------------
At least one of the (possibly) required ports is already taken.
ocorre.
Como renovar certificados sem interromper serviços, por exemplo, nginx?
Tente resolver o problema
Versão?
root@hostname:~# letsencrypt --version
letsencrypt 0.4.1
Opções?
root@hostname:~# letsencrypt --help
letsencrypt [SUBCOMMAND] [options] [-d domain] [-d domain] ...
The Let's Encrypt agent can obtain and install HTTPS/TLS/SSL certificates. By
default, it will attempt to use a webserver both for obtaining and installing
the cert. Major SUBCOMMANDS are:
(default) run Obtain & install a cert in your current webserver
certonly Obtain cert, but do not install it (aka "auth")
install Install a previously obtained cert in a server
renew Renew previously obtained certs that are near expiry
revoke Revoke a previously obtained certificate
rollback Rollback server configuration changes made during install
config_changes Show changes made to server config during installation
plugins Display information about installed plugins
Choice of server plugins for obtaining and installing cert:
(the apache plugin is not installed)
--standalone Run a standalone webserver for authentication
(nginx support is experimental, buggy, and not installed by default)
--webroot Place files in a server's webroot folder for authentication
OR use different plugins to obtain (authenticate) the cert and then install it:
--authenticator standalone --installer apache
More detailed help:
-h, --help [topic] print this message, or detailed help on a topic;
the available topics are:
all, automation, paths, security, testing, or any of the subcommands or
plugins (certonly, install, nginx, apache, standalone, webroot, etc)
Será seguro usar a seguinte opção?
(nginx support is experimental, buggy, and not installed by default) --webroot Place files in a server's webroot folder for authentication
Se você estiver tentando usar o certbot de maneira independente (separado de qualquer outro servidor da Web), sim, seu servidor da Web precisará ser interrompido para que o certbot possa usar essas portas.
No entanto, você pode integrar os diretórios que o certbot precisa diretamente na configuração do seu servidor da Web e, em seguida, o próprio certbot não precisa se vincular a essas portas.
Eu nunca fiz isso com
nginx
, mas você pode tercertbot
que usar a opçãodns-01
de protocolo ACME . Com isso, as investigações de controle de domínio necessárias para a renovação do certificado ocorrem sem a necessidade de vincular as portas que estão realmente atendendo ao tráfego.Para isso, você precisa ter controle sobre seu DNS, é claro, e provavelmente terá que sinalizar
nginx
para recarregar sua configuração após uma renovação de certificado bem-sucedida, mas isso pode ser feito sem tempo de inatividade.