SSL証明書を無料で提供してくれるLet’s Encrypt神。

SSL証明書の自動更新コマンドである certbot-auto を実行したところ、急に下記のエラーを吐くようになってしまった。

Installing Python packages...
Had a problem while installing Python packages.

pip prints the following errors: 
=====================================================
Collecting ConfigArgParse==0.14.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 7))
  Downloading https://files.pythonhosted.org/packages/55/ea/f0ade52790bcd687127a302b26c1663bf2e0f23210d5281dbfcd1dfcda28/ConfigArgParse-0.14.0.tar.gz
Collecting asn1crypto==0.24.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 9))
  Downloading https://files.pythonhosted.org/packages/ea/cd/35485615f45f30a510576f1a56d1e0a7ad7bd8ab5ed7cdc600ef7cd06222/asn1crypto-0.24.0-py2.py3-none-any.whl (101kB)
Collecting certifi==2019.3.9 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 12))
  Downloading https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl (158kB)
Collecting cffi==1.12.2 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 15))
  Downloading https://files.pythonhosted.org/packages/64/7c/27367b38e6cc3e1f49f193deb761fe75cda9f95da37b67b422e62281fcac/cffi-1.12.2.tar.gz (453kB)
Collecting chardet==3.0.4 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 44))
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting configobj==5.0.6 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 47))
  Downloading https://files.pythonhosted.org/packages/64/61/079eb60459c44929e684fa7d9e2fdca403f67d64dd9dbac27296be2e0fab/configobj-5.0.6.tar.gz
Collecting cryptography==2.6.1 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 49))
  Downloading https://files.pythonhosted.org/packages/07/ca/bc827c5e55918ad223d59d299fff92f3563476c3b00d0a9157d9c0217449/cryptography-2.6.1.tar.gz (491kB)
Collecting enum34==1.1.6 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 71))
  Downloading https://files.pythonhosted.org/packages/c5/db/e56e6b4bbac7c4a06de1c50de6fe1ef3810018ae11732a50f15f62c7d050/enum34-1.1.6-py2-none-any.whl
Collecting funcsigs==1.0.2 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 76))
  Downloading https://files.pythonhosted.org/packages/69/cb/f5be453359271714c01b9bd06126eaf2e368f1fddfff30818754b5ac2328/funcsigs-1.0.2-py2.py3-none-any.whl
Collecting future==0.17.1 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 79))
  Downloading https://files.pythonhosted.org/packages/90/52/e20466b85000a181e1e144fd8305caf2cf475e2f9674e797b222f8105f5f/future-0.17.1.tar.gz (829kB)
Collecting idna==2.8 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 81))
  Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
Collecting ipaddress==1.0.22 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 84))
  Downloading https://files.pythonhosted.org/packages/fc/d0/7fc3a811e011d4b388be48a0e381db8d990042df54aa4ef4599a31d39853/ipaddress-1.0.22-py2.py3-none-any.whl
Collecting josepy==1.1.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 87))
  Downloading https://files.pythonhosted.org/packages/23/46/30ac29742b03be92e05d1fd9048df6f0902bb0b3b042a7ea76a2b3c30f7e/josepy-1.1.0-py2.py3-none-any.whl (53kB)
Collecting mock==1.3.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 90))
  Downloading https://files.pythonhosted.org/packages/b2/50/664a70b87408bb6c14c1af2337efa64eb8d1af80c933531758b8fb41ec25/mock-1.3.0-py2.py3-none-any.whl (56kB)
Collecting parsedatetime==2.4 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 93))
  Downloading https://files.pythonhosted.org/packages/1d/48/ac8d4c6239437592852e951bcb9438dc585f80c29777c391aef69c67dc79/parsedatetime-2.4-py2-none-any.whl (40kB)
Collecting pbr==5.1.3 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 96))
  Downloading https://files.pythonhosted.org/packages/14/09/12fe9a14237a6b7e0ba3a8d6fcf254bf4b10ec56a0185f73d651145e9222/pbr-5.1.3-py2.py3-none-any.whl (107kB)
Collecting pyOpenSSL==19.0.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 99))
  Downloading https://files.pythonhosted.org/packages/01/c8/ceb170d81bd3941cbeb9940fc6cc2ef2ca4288d0ca8929ea4db5905d904d/pyOpenSSL-19.0.0-py2.py3-none-any.whl (53kB)
Collecting pyRFC3339==1.1 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 102))
  Downloading https://files.pythonhosted.org/packages/c1/7a/725f5c16756ec6211b1e7eeac09f469084595513917ea069bc023c40a5e2/pyRFC3339-1.1-py2.py3-none-any.whl
Collecting pycparser==2.19 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 105))
  Downloading https://www.piwheels.org/simple/pycparser/pycparser-2.19-py2.py3-none-any.whl (111kB)
Collecting pyparsing==2.3.1 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 107))
  Downloading https://files.pythonhosted.org/packages/de/0a/001be530836743d8be6c2d85069f46fecf84ac6c18c7f5fb8125ee11d854/pyparsing-2.3.1-py2.py3-none-any.whl (61kB)
Collecting python-augeas==0.5.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 110))
  Downloading https://files.pythonhosted.org/packages/41/e6/4b6740cb3e31b82252099994cea751c648b846aa7874343c31d68c2215be/python-augeas-0.5.0.tar.gz (90kB)
Collecting pytz==2018.9 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 112))
  Downloading https://files.pythonhosted.org/packages/61/28/1d3920e4d1d50b19bc5d24398a7cd85cc7b9a75a490570d5a30c57622d34/pytz-2018.9-py2.py3-none-any.whl (510kB)
Collecting requests==2.21.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 115))
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', BadStatusLine("''",))': /simple/requests/
  Downloading https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b/requests-2.21.0-py2.py3-none-any.whl (57kB)
Collecting requests-toolbelt==0.9.1 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 118))
  Downloading https://files.pythonhosted.org/packages/60/ef/7681134338fc097acef8d9b2f8abe0458e4d87559c689a8c306d0957ece5/requests_toolbelt-0.9.1-py2.py3-none-any.whl (54kB)
Collecting six==1.12.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 121))
  Downloading https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Collecting urllib3==1.24.2 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 124))
  Downloading https://files.pythonhosted.org/packages/df/1c/59cca3abf96f991f2ec3131a4ffe72ae3d9ea1f5894abe8a9c5e3c77cfee/urllib3-1.24.2-py2.py3-none-any.whl (131kB)
Collecting zope.component==4.5 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 127))
  Downloading https://files.pythonhosted.org/packages/97/e2/c785df1171f277ea93cc16bdcc112cb3ddfde1aeefbc401d46c49727f472/zope.component-4.5-py2.py3-none-any.whl (70kB)
Collecting zope.deferredimport==4.3 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 130))
  Downloading https://files.pythonhosted.org/packages/62/d2/e03e4b0c9103817e19d1ea577c1f7fb9b67e4c0397ca5127d377e1eafe0c/zope.deferredimport-4.3-py2.py3-none-any.whl
Collecting zope.deprecation==4.4.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 133))
  Downloading https://files.pythonhosted.org/packages/f9/26/b935bbf9d27e898b87d80e7873a0200cebf239253d0afe7a59f82fe90fff/zope.deprecation-4.4.0-py2.py3-none-any.whl
Collecting zope.event==4.4 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 136))
  Downloading https://files.pythonhosted.org/packages/c5/96/361edb421a077a4c208b4a5c212737d78ae03ce67fbbcd01621c49f332d1/zope.event-4.4-py2.py3-none-any.whl
Collecting zope.hookable==4.2.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 139))
  Downloading https://files.pythonhosted.org/packages/41/b5/378175b959565de41f45c775cdfbf8897aaeaf29a258b94e40bd2661ce46/zope.hookable-4.2.0.tar.gz
Collecting zope.interface==4.6.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 150))
  Downloading https://files.pythonhosted.org/packages/4e/d0/c9d16bd5b38de44a20c6dc5d5ed80a49626fafcb3db9f9efdc2a19026db6/zope.interface-4.6.0.tar.gz (150kB)
Collecting zope.proxy==4.3.1 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 180))
  Downloading https://files.pythonhosted.org/packages/7c/f5/e9ed65cdf8c93d24d7512ef89e21b241bc9ae75d90bc8608cc142f4c26f9/zope.proxy-4.3.1.tar.gz (43kB)
Collecting letsencrypt==0.7.0 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 200))
  Downloading https://files.pythonhosted.org/packages/fd/21/0c6f33829fadec8aca0c1ebb4d6f8101c05899356a58d1b2e506cb77cf18/letsencrypt-0.7.0-py2-none-any.whl
Collecting certbot==0.34.2 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 204))
  Downloading https://files.pythonhosted.org/packages/7f/76/fcac02d7f4facde6e736eb843f62b329393c496ae0a30cb0e623e157c691/certbot-0.34.2-py2.py3-none-any.whl (325kB)
Collecting acme==0.34.2 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 207))
  Downloading https://files.pythonhosted.org/packages/ac/5f/89ad50a3bad3f5abf879ebd455f16011cdaf473871ba36b7f1cc331c1def/acme-0.34.2-py2.py3-none-any.whl (85kB)
Collecting certbot-apache==0.34.2 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 210))
  Downloading https://files.pythonhosted.org/packages/d5/23/4f3182c697af002121ed4158c83ec6ac5bb5e8c4c19804462ddf21a241ab/certbot_apache-0.34.2-py2.py3-none-any.whl (254kB)
Collecting certbot-nginx==0.34.2 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 213))
  Downloading https://files.pythonhosted.org/packages/f5/2a/dd77fabc1d7e58eb8c17e1ef72bf497b911116fe086845ab6b9dc6c9379d/certbot_nginx-0.34.2-py2.py3-none-any.whl (86kB)
Requirement already satisfied: setuptools>=1.0 in /opt/eff.org/certbot/venv/lib/python2.7/site-packages (from josepy==1.1.0->-r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 87))
THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
    pycparser==2.19 from https://www.piwheels.org/simple/pycparser/pycparser-2.19-py2.py3-none-any.whl#sha256=344870c533812cb119c5475b5aed033ec546118711338ff9b2b78e67098d64e7 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 105)):
        Expected sha256 a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3
             Got        344870c533812cb119c5475b5aed033ec546118711338ff9b2b78e67098d64e7
=====================================================

Certbot has problem setting up the virtual environment.

We were not be able to guess the right solution from your pip 
output.

Consult https://certbot.eff.org/docs/install.html#problems-with-python-virtual-environment
for possible solutions.
You may also find some support resources at https://certbot.eff.org/support/ .

↑の中のメッセージに直し方が書いてあったので、以下に抜粋。

THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
    pycparser==2.19 from https://www.piwheels.org/simple/pycparser/pycparser-2.19-py2.py3-none-any.whl#sha256=344870c533812cb119c5475b5aed033ec546118711338ff9b2b78e67098d64e7 (from -r /tmp/tmp.qQ1peQVjSo/letsencrypt-auto-requirements.txt (line 105)):
        Expected sha256 a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3
             Got        344870c533812cb119c5475b5aed033ec546118711338ff9b2b78e67098d64e7

pycparser(?)とやらのファイルハッシュが合ってないのが原因らしい。Pythonのライブラリが更新されたのかな?

解決方法としては、certbot-auto を開いて、pycparser==2.19 の後に書かれているハッシュ値「a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3」を「344870c533812cb119c5475b5aed033ec546118711338ff9b2b78e67098d64e7」に直せばOK。

調べたところ何年か前にも同様のエラーがあったっぽいので、今後もちょくちょく発生しそう。心の片隅に置いとこっと。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*