ArchLinux (noyau 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;
}
}
}
Nous allons examiner cela, car c'est certainement quelque chose que nous devrions gérer, mais pour contourner ce problème, remplacez les guillemets dans le commentaire de la directive server_tokens
: “Server”
@joohoi
2018-05-05 12: 28: 44,181: DEBUG: certbot.main : certbot version: 0.22.2
2018-05-05 12: 28: 44.181: DEBUG: certbot.main : Arguments: ['--nginx']
2018-05-05 12: 28: 44,181: DEBUG: certbot.main : Plugins découverts: PluginsRegistry (PluginEntryPoint # manual, PluginEntryPoint # nginx, PluginEntryPoint # null, PluginEntryPoint # standalone, PluginEntryPoint # webroot)
2018-05-05 12: 28: 44,193: DEBUG: certbot.log : Niveau de journalisation racine défini à 20
2018-05-05 12: 28: 44,193: INFO: certbot.log : enregistrement du journal de débogage dans /var/log/letsencrypt/letsencrypt.log
2018-05-05 12: 28: 44,194: DEBUG: certbot.plugins.selection : authentificateur demandé nginx et installateur nginx
2018-05-05 12: 28: 44,343: DEBUG: certbot.log : Sortie anormale:
Traceback (dernier appel le plus récent):
Fichier "/ usr / bin / certbot", ligne 11, dans
load_entry_point ('certbot == 0.22.2', 'console_scripts', 'certbot') ()
Fichier "/usr/lib/python3/dist-packages/certbot/main.py", ligne 1266, en main
retourne config.func (config, plugins)
Fichier "/usr/lib/python3/dist-packages/certbot/main.py", ligne 1018, en cours d'exécution
installateur, authentificateur = plug_sel.choose_configurator_plugins (config, plugins, "run")
Fichier "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", ligne 189, dans choose_configurator_plugins
authentificateur = installer = pick_configurator (config, req_inst, plugins)
Fichier "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", ligne 25, dans pick_configurator
(interfaces.IAuthenticator, interfaces.IInstaller))
Fichier "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", ligne 77, dans pick_plugin
vérifié.prepare ()
Fichier "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", ligne 245, en préparation
renvoie [plugin_ep.prepare () pour plugin_ep dans six.itervalues (self._plugins)]
Fichier "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", ligne 245, dans
renvoie [plugin_ep.prepare () pour plugin_ep dans six.itervalues (self._plugins)]
Fichier "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", ligne 126, en préparation
self._initialized.prepare ()
Fichier "/usr/lib/python3/dist-packages/certbot_nginx/configurator.py", ligne 137, en préparation
self.parser = parser.NginxParser (self.conf ('racine-serveur'))
Fichier "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", ligne 38, dans __init__
self.load ()
Fichier "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", ligne 45, en cours de chargement
self._parse_recursively (self.config_root)
Fichier "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", ligne 66, dans _parse_recursively
self._parse_recursively (sous-entrée [1])
Fichier "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", ligne 56, dans _parse_recursively
arbres = self._parse_files (chemin de fichier)
Fichier "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", ligne 206, dans _parse_files
parsed = nginxparser.load (_fichier)
Fichier "/usr/lib/python3/dist-packages/certbot_nginx/nginxparser.py", ligne 123, en cours de chargement
renvoyer des charges (_file.read ())
Fichier "/usr/lib/python3.4/encodings/ascii.py", ligne 26, en décodage
return codecs.ascii_decode (entrée, self.errors) [0]
UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xd1 en position 31: ordinal pas dans la plage (128)
2018-05-05 12: 28: 44,346: ERREUR: certbot.log : Une erreur inattendue s'est produite:
Par exemple, les fichiers de type mime contiennent ces lignes:
application/vnd.geocube+xml g3 g³;
g³ fera lever l'erreur 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]
Merci pour l'information supplémentaire!
Après avoir lu un commentaire sur un autre fil de discussion par l'utilisateur @egberts , j'ai exécuté la commande suivante:
grep -r -P '[^\x00-\x7f]' /etc/apache2 /etc/letsencrypt /etc/nginx
Cette commande a trouvé le caractère incriminé "´" dans un fichier .conf du commentaire. Après l'avoir supprimé (vous pouvez modifier les commentaires comme vous le souhaitez) et recharger nginx, tout a fonctionné à nouveau.
@TommyZG pouvez-vous me dire de changer quel fichier?
J'ai trouvé que lorsque j'utilise certbot-auto dans Windows Remote, cela me lance cette erreur, mais lorsque je l'utilise dans Linux Remote, cela fonctionne très bien
J'ai eu le même problème. J'ai trouvé la solution de contournement suivante (sur Ubuntu):
bash
sudo locale-gen "en_US.UTF-8"
sudo dpkg-reconfigure locales
LC_ALL="en_US.UTF-8"
au fichier /etc/default/locale
.Après l'avoir fait, exécutez cerbot --nginx
succès.
Salut! La raison est que si vous avez des lettres non ascii dans la configuration de nginx (même dans les commentaires !!!), cela ne fonctionnera pas.
Clôture en faveur du duplicata # 5337, qui a un PR au # 5341.
@TommyZG pouvez-vous me dire de changer quel fichier?
C'était dans l'un de mes fichiers .conf. Vous en avez d'autres. C'était dans la ligne de commentaire.
J'ai eu un problème similaire, c'était dans /etc/nginx/conf.d/default.conf lignes 13 à 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.
J'ai supprimé ces commentaires et cela a fonctionné.
Merci @egberts & @TommyZG pour le conseil grep.
Hy ✌🏻,
vous ne devez utiliser qu'un autre terminal.
J'ai le même problème en utilisant le terminal mac, que j'ai utilisé Windows bash pour le faire fonctionner.
J'ai eu le même problème. J'ai trouvé la solution de contournement suivante (sur Ubuntu):
- Exécuter dans une console:
shell sudo locale-gen "en_US.UTF-8" sudo dpkg-reconfigure locales
- Ajoutez la ligne
LC_ALL="en_US.UTF-8"
au fichier/etc/default/locale
.- Reconnectez SSH.
Après l'avoir fait, exécutez
cerbot --nginx
succès.
Merci, cela a fonctionné pour moi.
Commentaire le plus utile
Après avoir lu un commentaire sur un autre fil de discussion par l'utilisateur @egberts , j'ai exécuté la commande suivante:
grep -r -P '[^\x00-\x7f]' /etc/apache2 /etc/letsencrypt /etc/nginx
Cette commande a trouvé le caractère incriminé "´" dans un fichier .conf du commentaire. Après l'avoir supprimé (vous pouvez modifier les commentaires comme vous le souhaitez) et recharger nginx, tout a fonctionné à nouveau.