Certbot-nginx에 오류가 표시됩니다.

Certbot-nginx에 오류가 표시됩니다.

sudo certbox --nginx 명령을 실행한 후. Certbot이 나에게 출력을 제공합니다

Saving debug log to /var/log/letsencrypt/letsencrypt.log
An unexpected error occurred:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 10453: ordinal not in range(128)
Please see the logfiles in /var/log/letsencrypt for more details.

마지막 로그 파일입니다

2018-07-31 14:43:08,904:DEBUG:certbot.main:certbot version: 0.25.1
2018-07-31 14:43:08,905:DEBUG:certbot.main:Arguments: ['--nginx']
2018-07-31 14:43:08,906:DEBUG:certbot.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#manual,PluginEntryPoint#nginx,PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2018-07-31 14:43:08,918:DEBUG:certbot.log:Root logging level set at 20
2018-07-31 14:43:08,919:INFO:certbot.log:Saving debug log to /var/log/letsencrypt/letsencrypt.log
2018-07-31 14:43:08,920:DEBUG:certbot.plugins.selection:Requested authenticator nginx and installer nginx
2018-07-31 14:43:08,967:DEBUG:certbot.log:Exiting abnormally:
Traceback (most recent call last):
  File "/usr/bin/certbot", line 11, in <module>
    load_entry_point('certbot==0.25.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python3.6/site-packages/certbot/main.py", line 1323, in main
    return config.func(config, plugins)
  File "/usr/lib/python3.6/site-packages/certbot/main.py", line 1073, in run
    installer, authenticator = plug_sel.choose_configurator_plugins(config, plugins, "run")
  File "/usr/lib/python3.6/site-packages/certbot/plugins/selection.py", line 195, 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 246, 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 246, 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 127, in prepare
    self._initialized.prepare()
  File "/usr/lib/python3.6/site-packages/certbot_nginx/configurator.py", line 144, in prepare
    self.parser = parser.NginxParser(self.conf('server-root'))
  File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 38, in __init__
    self.load()
  File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 45, in load
    self._parse_recursively(self.config_root)
  File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 66, in _parse_recursively
    self._parse_recursively(subentry[1])
  File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 56, in _parse_recursively
    trees = self._parse_files(filepath)
  File "/usr/lib/python3.6/site-packages/certbot_nginx/parser.py", line 207, in _parse_files
    parsed = nginxparser.load(_file)
  File "/usr/lib/python3.6/site-packages/certbot_nginx/nginxparser.py", line 123, 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 0xc2 in position 10453: ordinal not in range(128)
2018-07-31 14:43:08,969:ERROR:certbot.log:An unexpected error occurred:

아, 저는 아치를 사용합니다.

답변1

마지막으로 이 문제가 발생했을 때 LetsEncrypt는 자체 추가할 수 있도록 기본 nginx 구성에서 ASCII가 아닌 문자를 읽으려고 했습니다. 다음 명령은 ASCII가 아닌 모든 문자를 찾는 데 유용합니다(GNU 필요 grep) -P.

grep -Rn --color='auto' -P "[\x80-\xFF]" /etc/nginx

특히 /etc/nginx/sites-enabled/default.conf를 자세히 살펴보세요. 방금 확인한 시스템에서 29행은 주석으로 시작 # ssl_protocols하고 해당 행에는 LetsEncrypt가 설정되지 않도록 하는 비ASCII 문자("하지 마세요" 행에 아포스트로피여야 함)가 포함되어 있습니다.

파일에서 이러한 문자를 제거하거나 기본 구성을 비활성화할 수 있습니다. LetsEncrypt는 더 이상 기본 nginx 구성에 없으면 더 이상 이 오류를 표시하지 않습니다.

답변2

nginx 파일 중 하나에 certbot이 읽을 수 없는 임의의 문자가 있는 것 같습니다. 파일의 문자 인코딩이 문서에 입력된 문자와 일치하지 않을 수 있습니다. 또는 nginx 파일이 손상되었습니다.

에 나열된 모든 가상 서버 파일을 확인하십시오 /etc/nginx/conf.d/. 일반 텍스트 편집기를 사용하여 각 파일을 다시 만들고 사용되거나 예상되는 인코딩으로 파일을 저장합니다.

관련 정보