首页 > 解决方案 > 无法使用letsencrypt/nginx创建新证书

问题描述

我正在尝试使用 Certbot 为新域获取新的 SSL 证书,但出现错误:

发生意外错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 715: invalid start byte 有关详细信息,请参阅 /var/log/letsencrypt 中的日志文件。

这是letsencrypt日志的输出,不知道如何解决这个问题。

2021-09-28 11:24:03,054:DEBUG:certbot.main:certbot version: 0.31.0
2021-09-28 11:24:03,055:DEBUG:certbot.main:Arguments: []
2021-09-28 11:24:03,056:DEBUG:certbot.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#manual,PluginEntryPoint#nginx,PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2021-09-28 11:24:03,064:DEBUG:certbot.log:Root logging level set at 20
2021-09-28 11:24:03,065:INFO:certbot.log:Saving debug log to /var/log/letsencrypt/letsencrypt.log
2021-09-28 11:24:03,066:DEBUG:certbot.plugins.selection:Requested authenticator None and installer None
2021-09-28 11:24:03,194:DEBUG:certbot.log:Exiting abnormally:
Traceback (most recent call last):
  File "/usr/bin/certbot", line 11, in <module>
    load_entry_point('certbot==0.31.0', 'console_scripts', 'certbot')()
  File "/usr/lib/python3/dist-packages/certbot/main.py", line 1365, in main
    return config.func(config, plugins)
  File "/usr/lib/python3/dist-packages/certbot/main.py", line 1101, in run
    installer, authenticator = plug_sel.choose_configurator_plugins(config, plugins, "run")
  File "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", line 225, in choose_configurator_plugins
    authenticator = installer = pick_configurator(config, req_inst, plugins)
  File "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", line 25, in pick_configurator
    (interfaces.IAuthenticator, interfaces.IInstaller))
  File "/usr/lib/python3/dist-packages/certbot/plugins/selection.py", line 106, in pick_plugin
    verified.prepare()
  File "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", line 251, in prepare
    return [plugin_ep.prepare() for plugin_ep in six.itervalues(self._plugins)]
  File "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", line 251, in <listcomp>
    return [plugin_ep.prepare() for plugin_ep in six.itervalues(self._plugins)]
  File "/usr/lib/python3/dist-packages/certbot/plugins/disco.py", line 132, in prepare
    self._initialized.prepare()
  File "/usr/lib/python3/dist-packages/certbot_nginx/configurator.py", line 152, in prepare
    self.parser = parser.NginxParser(self.conf('server-root'))
  File "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", line 38, in __init__
    self.load()
  File "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", line 45, in load
    self._parse_recursively(self.config_root)
  File "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", line 66, in _parse_recursively
    self._parse_recursively(subentry[1])
  File "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", line 56, in _parse_recursively
    trees = self._parse_files(filepath)
  File "/usr/lib/python3/dist-packages/certbot_nginx/parser.py", line 207, in _parse_files
    parsed = nginxparser.load(_file)
  File "/usr/lib/python3/dist-packages/certbot_nginx/nginxparser.py", line 123, in load
    return loads(_file.read())
  File "/usr/lib/python3.6/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 715: invalid start byte
2021-09-28 11:24:03,196:ERROR:certbot.log:An unexpected error occurred:

标签: nginxlets-encrypt

解决方案


根据来自 github 的错误报告,这是配置文件中的 unicode 问题。

解决方案 #1 - 您需要生成一个 UTF-8 语言环境并使用它启动 certbot

像这样:

LANG=en_US.UTF-8 certbot […]

或者,解决方案 #2 -替换 nginx 配置中的 unicode 字符

您可以使用以下命令找到有问题的行并将其删除。

grep -r -P '[^\x00-\x7f]' /etc/apache2 /etc/letsencrypt /etc/nginx

并重新运行 certbot 命令。


推荐阅读