Let's Encrypt の certbotのエラー
Let's Encryptで証明書を発行しようとした時にハマったのでメモします。
証明書を発行するために、ドメインの認証をする必要があるのですが、いまは便利なものでcertbotという仕組みが用意されているようです。 検索すれば情報がたくさん出てきます。
さっそく私のCent7の環境でもcertbotで証明書を発行するべく、試してみましたが、ImportError: No module named contrib.pyopenssl
というエラーが出てしまいました。。。
[root@test foxtrot]# certbot certonly --webroot -w ~/cert -d example.jp Traceback (most recent call last): File "/bin/certbot", line 9, in <module> load_entry_point('certbot==0.19.0', 'console_scripts', 'certbot')() File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point return ep.load() File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load entry = __import__(self.module_name, globals(),globals(), ['__name__']) File "/usr/lib/python2.7/site-packages/certbot/main.py", line 19, in <module> from certbot import client File "/usr/lib/python2.7/site-packages/certbot/client.py", line 11, in <module> from acme import client as acme_client File "/usr/lib/python2.7/site-packages/acme/client.py", line 33, in <module> import urllib3.contrib.pyopenssl # pylint: disable=import-error ImportError: No module named contrib.pyopenssl [root@test foxtrot]#
このエラーは、以下のようなissueを参考にしました。
何個か書かれていた手順をためしたり、パッケージをアップデートすることによって解決できました。
### pyOpenSSLのアップデート [root@test foxtrot]# rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm 準備しています... ################################# [100%] 更新中 / インストール中... 1:pyOpenSSL-0.15.1-1.el7 ################################# [ 50%] 整理中 / 削除中... 2:pyOpenSSL-0.13.1-3.el7 ################################# [100%] [root@test foxtrot]# ### シンボリックリンクの作成 [root@test foxtrot]# ln -s /usr/lib/python2.7/site-packages/OpenSSL /usr/lib/python2.7/site-packages/pyOpenSSL [root@test foxtrot]# [root@test foxtrot]# [root@test foxtrot]# ls -ld /usr/lib/python2.7/site-packages/pyOpenSSL lrwxrwxrwx 1 root root 40 11月 19 12:13 /usr/lib/python2.7/site-packages/pyOpenSSL -> /usr/lib/python2.7/site-packages/OpenSSL [root@test foxtrot]# ### python-urllibのアップデート [root@test foxtrot]# yum update python-urllib ... [root@test foxtrot]# rpm -qa | grep urllib python-urllib3-1.10.2-3.el7.noarch [root@test foxtrot]#
再度発行を試します。 この度は、調子よくメールアドレスとか聞いてきたのですが、また別のエラーが。。。 なんかのパッケージにバグがあるっぽいなと。。。
... Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org An unexpected error occurred: TypeError: cannot concatenate 'str' and 'tuple' objects Please see the logfiles in /var/log/letsencrypt for more details.
どうしようかなーと考えて、再度検索し、結局別のcertbotをもってくることで解決しました。 参考にしたのは、gitのcertbotを持ってくる手順です。
これでなんとかかんとか証明書を発行することができました。 次は証明書の更新の自動化とかどうしようかなぁと考えています。