nginx - 无法使用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:
解决方案
根据来自 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 命令。
推荐阅读
- javascript - Mapbox GL更改标记图标并在单击另一个时再次单击并返回
- c - 我们如何从给定的字符串中获取元音子字符串
- javascript - 将现有的 jQuery 函数绑定到链接
- android - 如何在 Android 中以编程方式创建和扩展 BottomNavigationView?
- python-2.7 - 请求反馈:python2.7 倒数计时器中用于 Raspberry Pi 的全局变量或类
- google-data-studio - 如何在 Google Data Studio 中使用 CASE 创建新的日期字段
- php - PHP/laravel: Assign input name to input value
- mysql - 根据连接 4 个表更新一个表
- python - 如何编写一个在第一次回显后不断开连接的python回显服务器?
- elasticsearch - Elasticsearch - 按分数修剪结果的最佳方法?