ArchLinux (Kernel 4.13.11-1)
pacman -S cerbot-nginx
cerbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
An unexpected error occurred:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 330: ordinal not in range(128)
Please see the logfiles in /var/log/letsencrypt for more details.
2017-11-12 15:15:18,497:DEBUG:certbot.main:certbot version: 0.19.0
2017-11-12 15:15:18,499:DEBUG:certbot.main:Arguments: ['--nginx']
2017-11-12 15:15:18,500:DEBUG:certbot.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#manual,PluginEntryPoint#nginx,PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2017-11-12 15:15:18,529:DEBUG:certbot.log:Root logging level set at 20
2017-11-12 15:15:18,531:INFO:certbot.log:Saving debug log to /var/log/letsencrypt/letsencrypt.log
2017-11-12 15:15:18,532:DEBUG:certbot.plugins.selection:Requested authenticator nginx and installer nginx
2017-11-12 15:15:18,557:DEBUG:certbot.log:Exiting abnormally:
Traceback (most recent call last):
File "/usr/bin/certbot", line 11, in <module>
load_entry_point('certbot==0.19.0', 'console_scripts', 'certbot')()
File "/usr/lib/python3.6/site-packages/certbot/main.py", line 861, in main
return config.func(config, plugins)
File "/usr/lib/python3.6/site-packages/certbot/main.py", line 685, in run
installer, authenticator = plug_sel.choose_configurator_plugins(config, plugins, "run")
File "/usr/lib/python3.6/site-packages/certbot/plugins/selection.py", line 189, in choose_configurator_plugins
authenticator = installer = pick_configurator(config, req_inst, plugins)
File "/usr/lib/python3.6/site-packages/certbot/plugins/selection.py", line 25, in pick_configurator
(interfaces.IAuthenticator, interfaces.IInstaller))
File "/usr/lib/python3.6/site-packages/certbot/plugins/selection.py", line 77, in pick_plugin
verified.prepare()
File "/usr/lib/python3.6/site-packages/certbot/plugins/disco.py", line 248, in prepare
return [plugin_ep.prepare() for plugin_ep in six.itervalues(self._plugins)]
File "/usr/lib/python3.6/site-packages/certbot/plugins/disco.py", line 248, in <listcomp>
return [plugin_ep.prepare() for plugin_ep in six.itervalues(self._plugins)]
File "/usr/lib/python3.6/site-packages/certbot/plugins/disco.py", line 130, in prepare
self._initialized.prepare()
File "/usr/lib/python3.6/site-packages/certbot_nginx/configurator.py", line 156, in prepare
self.parser = parser.NginxParser(self.conf('server-root'))
File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 35, in __init__
self.load()
File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 42, in load
self._parse_recursively(self.config_root)
File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 53, in _parse_recursively
trees = self._parse_files(filepath)
File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 203, in _parse_files
parsed = nginxparser.load(_file)
File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 122, in load
return loads(_file.read())
File "/usr/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 330: ordinal not in range(128)
2017-11-12 15:15:18,560:ERROR:certbot.log:An unexpected error occurred:
user http;
worker_processes auto;
worker_cpu_affinity auto;
pcre_jit on;
events {
worker_connections 2048;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
aio threads;
server_tokens off; # Security: Disables nginx version in error messages and in the “Server” response header field.
charset utf-8; # Force usage of UTF-8
index index.php index.html index.htm;
server {
listen 80;
listen [::]:80;
server_name domain.tld;
root /usr/share/nginx/html;
location / {
index index.htm index.html;
}
# ACME challenge
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/lib/letsencrypt;
}
}
}
Veremos isso, pois certamente é algo com que devemos lidar, mas para contornar isso, substitua as aspas duplas no comentário da diretiva server_tokens
: “Server”
@joohoi
05-05-2018 12: 28: 44,181: DEBUG: certbot.main : versão do certbot: 0.22.2
05-05-2018 12: 28: 44,181: DEBUG: certbot.main : Argumentos: ['--nginx']
05-05-2018 12: 28: 44,181: DEBUG: certbot.main : Plugins descobertos: PluginsRegistry (PluginEntryPoint # manual, PluginEntryPoint # nginx, PluginEntryPoint # null, PluginEntryPoint # autônomo, PluginEntryPoint # webroot)
05-05-2018 12: 28: 44,193: DEBUG: certbot.log : Nível de registro raiz definido em 20
05/05/2018 12: 28: 44.193: INFO: certbot.log : Salvando log de depuração em /var/log/letsencrypt/letsencrypt.log
05-05-2018 12: 28: 44,194: DEBUG: certbot.plugins.selection : autenticador solicitado nginx e instalador nginx
05-05-2018 12: 28: 44.343: DEBUG: certbot.log : Saindo de forma anormal:
Traceback (última chamada mais recente):
Arquivo "/ usr / bin / certbot", linha 11, em
load_entry_point ('certbot == 0.22.2', 'console_scripts', 'certbot') ()
Arquivo "/usr/lib/python3/dist-packages/certbot/main.py", linha 1266, no principal
return config.func (config, plugins)
Arquivo "/usr/lib/python3/dist-packages/certbot/main.py", linha 1018, em execução
instalador, authenticator = plug_sel.choose_configurator_plugins (config, plugins, "run")
Arquivo "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", linha 189, em choose_configurator_plugins
autenticador = instalador = pick_configurator (config, req_inst, plugins)
Arquivo "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", linha 25, em pick_configurator
(interfaces.IAuthenticator, interfaces.IInstaller))
Arquivo "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", linha 77, em pick_plugin
verificado.prepare ()
Arquivo "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", linha 245, em preparação
return [plugin_ep.prepare () para plugin_ep em six.itervalues (self._plugins)]
Arquivo "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", linha 245, em
return [plugin_ep.prepare () para plugin_ep em six.itervalues (self._plugins)]
Arquivo "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", linha 126, na preparação
self._initialized.prepare ()
Arquivo "/usr/lib/python3/dist-packages/certbot_nginx/configurator.py", linha 137, na preparação
self.parser = parser.NginxParser (self.conf ('server-root'))
Arquivo "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", linha 38, em __init__
self.load ()
Arquivo "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", linha 45, no carregamento
self._parse_recursively (self.config_root)
Arquivo "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", linha 66, em _parse_recursively
self._parse_recursively (subentrada [1])
Arquivo "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", linha 56, em _parse_recursively
trees = self._parse_files (filepath)
Arquivo "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", linha 206, em _parse_files
analisado = nginxparser.load (_file)
Arquivo "/usr/lib/python3/dist-packages/certbot_nginx/nginxparser.py", linha 123, no carregamento
retorna carrega (_file.read ())
Arquivo "/usr/lib/python3.4/encodings/ascii.py", linha 26, em decodificação
return codecs.ascii_decode (input, self.errors) [0]
UnicodeDecodeError: o codec 'ascii' não pode decodificar o byte 0xd1 na posição 31: ordinal fora do intervalo (128)
05-05-2018 12: 28: 44.346: ERRO: certbot.log : Ocorreu um erro inesperado:
Por exemplo, os arquivos do tipo MIME contêm estas linhas:
application/vnd.geocube+xml g3 g³;
g³ fará aumentar o UnicodeDecodeError
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(62)_parse_recursively()
-> elif entry[0] == ['http'] or entry[0] == ['server']:
(Pdb) l
57 for tree in trees:
58 for entry in tree:
59 if _is_include_directive(entry):
60 # Parse the top-level included file
61 self._parse_recursively(entry[1])
62 -> elif entry[0] == ['http'] or entry[0] == ['server']:
63 # Look for includes in the top-level 'http'/'server' context
64 for subentry in entry[1]:
65 if _is_include_directive(subentry):
66 self._parse_recursively(subentry[1])
67 elif entry[0] == ['http'] and subentry[0] == ['server']:
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(64)_parse_recursively()
-> for subentry in entry[1]:
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(65)_parse_recursively()
-> if _is_include_directive(subentry):
(Pdb) subentry
['include', 'mime.types']
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(66)_parse_recursively()
-> self._parse_recursively(subentry[1])
(Pdb) s
--Call--
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(47)_parse_recursively()
-> def _parse_recursively(self, filepath):
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(55)_parse_recursively()
-> filepath = self.abs_path(filepath)
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(56)_parse_recursively()
-> trees = self._parse_files(filepath)
(Pdb) s
--Call--
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(189)_parse_files()
-> def _parse_files(self, filepath, override=False):
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(198)_parse_files()
-> files = glob.glob(filepath) # nginx on unix calls glob(3) for this
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(201)_parse_files()
-> trees = []
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(202)_parse_files()
-> for item in files:
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(203)_parse_files()
-> if item in self.parsed and not override:
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(205)_parse_files()
-> try:
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(206)_parse_files()
-> with open(item) as _file:
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/parser.py(207)_parse_files()
-> parsed = nginxparser.load(_file)
(Pdb) s
--Call--
> /usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py(115)load()
-> def load(_file):
(Pdb) n
> /usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py(123)load()
-> return loads(_file.read())
(Pdb) loads
<function loads at 0x7faacac85048>
(Pdb) s
--Call--
> /usr/lib/python3.6/encodings/ascii.py(25)decode()
-> def decode(self, input, final=False):
(Pdb) --KeyboardInterrupt--
(Pdb) n
> /usr/lib/python3.6/encodings/ascii.py(26)decode()
-> return codecs.ascii_decode(input, self.errors)[0]
(Pdb) n
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 10453: ordinal not in range(128)
> /usr/lib/python3.6/encodings/ascii.py(26)decode()
-> return codecs.ascii_decode(input, self.errors)[0]
Obrigado pela informação adicional!
Depois de ler um comentário em outro tópico do usuário @egberts , executei o seguinte comando:
grep -r -P '[^\x00-\x7f]' /etc/apache2 /etc/letsencrypt /etc/nginx
Esse comando encontrou o caractere ofensivo "´" em um arquivo .conf no comentário. Depois de removê-lo (você pode editar os comentários como desejar) e recarregar o nginx, tudo funcionou novamente.
@TommyZG, você pode me dizer para alterar qual arquivo?
descobri que quando eu uso o certbot-auto no windows remote, ele me joga este erro, mas quando eu uso no linux remote, ele funciona muito
Eu tive o mesmo problema. Encontrei a seguinte solução alternativa (no Ubuntu):
bash
sudo locale-gen "en_US.UTF-8"
sudo dpkg-reconfigure locales
LC_ALL="en_US.UTF-8"
ao arquivo /etc/default/locale
.Depois de fazer isso, execute cerbot --nginx
sucessos.
Oi! O motivo é que, se você tiver algumas letras não ASCII na configuração do nginx (mesmo nos comentários!), Ele não funcionará.
Fechando em favor da duplicata nº 5337, que possui PR no nº 5341.
@TommyZG, você pode me dizer para alterar qual arquivo?
Ele estava em um dos meus arquivos .conf. Você tem outros. Estava na linha de comentários.
Tive um problema semelhante, estava em /etc/nginx/conf.d/default.conf linha 13 a 17:
# 1) limit_req ^`^s to limit the rate of requests from one IP
# 2) limit_conn ^`^s to limit the number of connections from one IP
# 3) client_body_timeout ^`^s to close the connections with slow body
# 4) client_header_timeout ^`^s to close the connections with slow headers
# 5) send_timeout ^`^s If the client does not receive anything within this time, the connection is closed.
Eu removi esses comentários e funcionou.
Obrigado @egberts & @TommyZG pela dica grep.
Hy ✌🏻,
você só deve usar outro terminal.
Eu tenho o mesmo problema enquanto usei o terminal mac, do que usei o Windows Bash para fazê-lo funcionar.
Eu tive o mesmo problema. Encontrei a seguinte solução alternativa (no Ubuntu):
- Execute em um console:
shell sudo locale-gen "en_US.UTF-8" sudo dpkg-reconfigure locales
- Adicione a linha
LC_ALL="en_US.UTF-8"
ao arquivo/etc/default/locale
.- Reconecte o SSH.
Depois de fazer isso, execute
cerbot --nginx
sucessos.
Obrigado, funcionou para mim.
Comentários muito úteis
Depois de ler um comentário em outro tópico do usuário @egberts , executei o seguinte comando:
grep -r -P '[^\x00-\x7f]' /etc/apache2 /etc/letsencrypt /etc/nginx
Esse comando encontrou o caractere ofensivo "´" em um arquivo .conf no comentário. Depois de removê-lo (você pode editar os comentários como desejar) e recarregar o nginx, tudo funcionou novamente.