я побежал
./letsencrypt-auto --help --debug
для установки позволяет шифровать.
Все пакеты успешно установлены, но затем возникает следующая ошибка:
Создание виртуальной среды...
Обновление зависимостей letsencrypt и виртуальной среды...... Команда "/root/.local/share/letsencrypt/bin/python2.7 -c" import setuptools, tokenize; file = '/dev/shm/pip-build-OslHtf/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)( file ).read().replace('rn', ' n'), файл , 'exec'))" install --record /tmp/pip-lx9pFX-record/install-record.txt --single-version-externally-managed --compile --install-headers /root/ .local/share/letsencrypt/include/site/python2.7/cffi» с кодом ошибки 1 в /dev/shm/pip-build-OslHtf/cffi
Любая идея? Я понимаю, что поддержка amazon linux является экспериментальной, и я не собираюсь использовать все инструменты автоматизации (пока), но было бы здорово, если бы я мог хотя бы сгенерировать сертификаты вручную.
Из № 1458 ,
Мне удалось запустить клиент с модифицированным letsencrypt-auto на Amazon Linux 2015.03, сначала вручную установив пакет python27-virtualenv, а затем запустив загрузочный путь RedHat.
Я сделал это, и это, кажется, работает. Вам нужно запустить sudo yum install python27-virtualenv и sudo ./bootstrap/_rpm_common.sh
@barshinoff Мне любопытно, связано ли это вообще с # 1677 (ошибка нехватки памяти при компиляции зависимостей cffi на других дистрибутивах семейства redhat). Я проверил, что ./letsencrypt-auto работает с чистой установкой amazon linux 2015.09. .1 и 2015.03.1 на инстансах t2.micro, где больше ничего не запущено. На каком типе экземпляра и AMI вы пытаетесь это сделать? Если вы запустите его подробно с помощью '-v' ./letsencrypt-auto --help --debug -v, он может выдать больше информации о том, что происходит.
Привет, спасибо за совет.
Это не проблема с памятью, чтобы убедиться, что больше ничего не работает, и подключил диск подкачки на 40 ГБ.
Я использую дистрибутив 2015.09 со всеми обновленными пакетами.
Сначала установка пакета python27-virtualenv, а затем запуск загрузочного пути RedHat, как было предложено @kiwimancy , избавили меня от первоначальной ошибки.
Ошибка, которую я сейчас получаю:
Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt
Traceback (most recent call last):
File "/root/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module>
from letsencrypt.cli import main
File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/letsencrypt/cli.py", line 17, in <module>
import OpenSSL
ImportError: No module named OpenSSL
Та же ошибка здесь, на том же Amazon Linux 2015.09.
Ниже приведен подробный журнал, надеюсь, это поможет определить проблему.
$ ./letsencrypt-auto help --debug --verbose
Bootstrapping dependencies for Amazon Linux...
yum is /usr/bin/yum
Loaded plugins: priorities, update-motd, upgrade-helper
Package python26-2.6.9-1.80.amzn1.x86_64 already installed and latest version
Package python26-devel-2.6.9-1.80.amzn1.x86_64 already installed and latest version
Package python26-virtualenv-12.0.7-1.10.amzn1.noarch already installed and latest version
Nothing to do
Loaded plugins: priorities, update-motd, upgrade-helper
Package git-2.4.3-6.40.amzn1.x86_64 already installed and latest version
Package gcc-4.8.3-3.20.amzn1.noarch already installed and latest version
Package dialog-1.1-9.20080819.1.5.amzn1.x86_64 already installed and latest version
Package augeas-libs-1.0.0-5.7.amzn1.x86_64 already installed and latest version
Package 1:openssl-devel-1.0.1k-10.87.amzn1.x86_64 already installed and latest version
Package libffi-devel-3.0.13-11.4.amzn1.x86_64 already installed and latest version
Package system-rpm-config-9.0.3-42.27.amzn1.noarch already installed and latest version
Package ca-certificates-2015.2.4-65.0.1.14.amzn1.noarch already installed and latest version
Nothing to do
Creating virtual environment...
Already using interpreter /usr/bin/python2.7
New python executable in /home/ec2-user/.local/share/letsencrypt/bin/python2.7
Also creating executable in /home/ec2-user/.local/share/letsencrypt/bin/python
Installing setuptools, pip...done.
Updating letsencrypt and virtual environment dependencies...
You are using pip version 6.0.8, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting setuptools from https://pypi.python.org/packages/3.5/s/setuptools/setuptools-18.7.1-py2.py3-none-any.whl#md5=a793e7b7ad3a91ca796f2e3bbd4ac355
Using cached setuptools-18.7.1-py2.py3-none-any.whl
Installing collected packages: setuptools
Found existing installation: setuptools 12.0.5
Uninstalling setuptools-12.0.5:
Successfully uninstalled setuptools-12.0.5
Successfully installed setuptools-18.7.1
You are using pip version 6.0.8, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-7.1.2-py2.py3-none-any.whl#md5=5ff9fec0be479e4e36df467556deed4d
Using cached pip-7.1.2-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 6.0.8
Uninstalling pip-6.0.8:
Successfully uninstalled pip-6.0.8
Successfully installed pip-7.1.2
Collecting letsencrypt
Using cached letsencrypt-0.1.0-py2-none-any.whl
Collecting letsencrypt-apache
Using cached letsencrypt_apache-0.1.0-py2-none-any.whl
Collecting ConfigArgParse from git+https://github.com/kuba/[email protected]#egg=ConfigArgParse (from -r ./py26reqs.txt (line 1))
Cloning https://github.com/kuba/ConfigArgParse.git (to python2.6-0.9.3) to /tmp/pip-build-3Vgs0V/ConfigArgParse
Collecting acme==0.1.0 (from letsencrypt)
Using cached acme-0.1.0-py2-none-any.whl
Requirement already up-to-date: setuptools in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Collecting python2-pythondialog>=3.2.2rc1 (from letsencrypt)
Using cached python2-pythondialog-3.3.0.tar.bz2
Collecting PyOpenSSL (from letsencrypt)
Using cached pyOpenSSL-0.15.1-py2.py3-none-any.whl
Collecting requests (from letsencrypt)
Using cached requests-2.8.1-py2.py3-none-any.whl
Collecting parsedatetime (from letsencrypt)
Using cached parsedatetime-1.5-py2-none-any.whl
Collecting configobj (from letsencrypt)
Using cached configobj-5.0.6.tar.gz
Collecting pytz (from letsencrypt)
Using cached pytz-2015.7-py2.py3-none-any.whl
Collecting psutil>=2.1.0 (from letsencrypt)
Using cached psutil-3.3.0.tar.gz
Collecting six (from letsencrypt)
Using cached six-1.10.0-py2.py3-none-any.whl
Collecting cryptography>=0.7 (from letsencrypt)
Using cached cryptography-1.1.1.tar.gz
Collecting zope.interface (from letsencrypt)
Using cached zope.interface-4.1.3.tar.gz
Collecting zope.component (from letsencrypt)
Using cached zope.component-4.2.2.tar.gz
Collecting mock (from letsencrypt)
Using cached mock-1.3.0-py2.py3-none-any.whl
Collecting pyrfc3339 (from letsencrypt)
Using cached pyRFC3339-1.0-py2.py3-none-any.whl
Collecting python-augeas (from letsencrypt-apache)
Using cached python-augeas-0.5.0.tar.gz
Collecting pyasn1 (from acme==0.1.0->letsencrypt)
Using cached pyasn1-0.1.9-py2.py3-none-any.whl
Collecting ndg-httpsclient (from acme==0.1.0->letsencrypt)
Using cached ndg_httpsclient-0.4.0.tar.gz
Collecting werkzeug (from acme==0.1.0->letsencrypt)
Using cached Werkzeug-0.11.2-py2.py3-none-any.whl
Collecting idna>=2.0 (from cryptography>=0.7->letsencrypt)
Using cached idna-2.0-py2.py3-none-any.whl
Collecting enum34 (from cryptography>=0.7->letsencrypt)
Using cached enum34-1.1.1.tar.gz
Collecting ipaddress (from cryptography>=0.7->letsencrypt)
Using cached ipaddress-1.0.15-py27-none-any.whl
Collecting cffi>=1.1.0 (from cryptography>=0.7->letsencrypt)
Using cached cffi-1.3.1.tar.gz
Collecting zope.event (from zope.component->letsencrypt)
Using cached zope.event-4.1.0.tar.gz
Collecting funcsigs (from mock->letsencrypt)
Using cached funcsigs-0.4-py2.py3-none-any.whl
Collecting pbr>=0.11 (from mock->letsencrypt)
Using cached pbr-1.8.1-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.1.0->cryptography>=0.7->letsencrypt)
Using cached pycparser-2.14.tar.gz
Installing collected packages: pytz, requests, pyasn1, idna, six, enum34, ipaddress, pycparser, cffi, cryptography, PyOpenSSL, ndg-httpsclient, werkzeug, funcsigs, pbr, mock, pyrfc3339, acme, python2-pythondialog, parsedatetime, configobj, psutil, zope.interface, zope.event, zope.component, ConfigArgParse, letsencrypt, python-augeas, letsencrypt-apache
Running setup.py install for enum34
Running setup.py install for pycparser
Running setup.py install for cffi
Running setup.py install for cryptography
Running setup.py install for ndg-httpsclient
Running setup.py install for python2-pythondialog
Running setup.py install for configobj
Running setup.py install for psutil
Running setup.py install for zope.interface
Running setup.py install for zope.event
Running setup.py install for zope.component
Running setup.py install for ConfigArgParse
Running setup.py install for python-augeas
Successfully installed ConfigArgParse-0.9.3 PyOpenSSL acme-0.1.0 cffi configobj-5.0.6 cryptography enum34-1.1.1 funcsigs-0.4 idna-2.0 ipaddress-1.0.15 letsencrypt-0.1.0 letsencrypt-apache-0.1.0 mock-1.3.0 ndg-httpsclient-0.4.0 parsedatetime-1.5 pbr-1.8.1 psutil pyasn1-0.1.9 pycparser-2.14 pyrfc3339 python-augeas-0.5.0 python2-pythondialog-3.3.0 pytz-2015.7 requests-2.8.1 six-1.10.0 werkzeug zope.component-4.2.2 zope.event-4.1.0 zope.interface
Running with virtualenv: sudo /home/ec2-user/.local/share/letsencrypt/bin/letsencrypt help --debug --verbose
Traceback (most recent call last):
File "/home/ec2-user/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module>
from letsencrypt.cli import main
File "/home/ec2-user/.local/share/letsencrypt/local/lib/python2.7/dist-packages/letsencrypt/cli.py", line 17, in <module>
import OpenSSL
ImportError: No module named OpenSSL
Я попытался прямо решить для pyOpenSSL, вручную добавив pip install pyOpenSSL
pip install cryptography
перед https://github.com/letsencrypt/letsencrypt/blob/master/letsencrypt-auto#L181 , но застрял с версией cffi несовместимость и бросил.
У меня тоже ошибка:
$ ./letsencrypt-auto --apache -d www.3chirurgen.de -d 3chirurgen.de -d incentergy.de -d www.incentergy.de -d shop.incentergy.de
Updating letsencrypt and virtual environment dependencies......Command "/home/ec2-user/.local/share/letsencrypt/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-oV91ZI/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-GU4tNk-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ec2-user/.local/share/letsencrypt/include/site/python2.7/cffi" failed with error code 1 in /tmp/pip-build-oV91ZI/cffi
$ uname -a
Linux ip-172-31-11-205 4.1.7-15.23.amzn1.x86_64 #1 SMP Mon Sep 14 23:20:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Решение от @kiwimancy сработало:
sudo yum install python27-virtualenv
sudo ./bootstrap/_rpm_common.sh
# Output nothing to do
Следующая проблема:
$ ./letsencrypt-auto --apache -d www.3chirurgen.de -d 3chirurgen.de -d incentergy.de -d www.incentergy.de -d shop.incentergy.de
Running with virtualenv: sudo /home/ec2-user/.local/share/letsencrypt/bin/letsencrypt --apache -d www.3chirurgen.de -d 3chirurgen.de -d incentergy.de -d www.incentergy.de -d shop.incentergy.de
Traceback (most recent call last):
File "/home/ec2-user/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module>
from letsencrypt.cli import main
File "/home/ec2-user/.local/share/letsencrypt/local/lib/python2.7/dist-packages/letsencrypt/cli.py", line 17, in <module>
import OpenSSL
ImportError: No module named OpenSSL
Решение:
$ /home/ec2-user/.local/share/letsencrypt/bin/pip install pyopenssl
Следующая проблема:
Complete output from command /home/ec2-user/.local/share/letsencrypt/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-5_HYBt/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-BxpscI-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ec2-user/.local/share/letsencrypt/include/site/python2.7/cffi:
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/cffi
copying cffi/ffiplatform.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/api.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/recompiler.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/vengine_gen.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/model.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/cparser.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/__init__.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/gc_weakref.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/lock.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/verifier.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/commontypes.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-2.7/cffi
copying cffi/_cffi_include.h -> build/lib.linux-x86_64-2.7/cffi
copying cffi/parse_c_type.h -> build/lib.linux-x86_64-2.7/cffi
running build_ext
building '_cffi_backend' extension
creating build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/c
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DUSE__THREAD -I/usr/include/python2.7 -c c/_cffi_backend.c -o build/temp.linux-x86_64-2.7/c/_cffi_backend.o
c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory
#include <Python.h>
^
compilation terminated.
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/home/ec2-user/.local/share/letsencrypt/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-5_HYBt/cffi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-BxpscI-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ec2-user/.local/share/letsencrypt/include/site/python2.7/cffi" failed with error code 1 in /tmp/pip-build-5_HYBt/cffi
Решение:
sudo yum install python27-devel
Следующая проблема:
Плагин Apache не работает; могут быть проблемы с вашей существующей конфигурацией.
Ошибка: NoInstallationError()
2015-12-04 08:18:50,797:DEBUG:letsencrypt.cli:Root logging level set at 20
2015-12-04 08:18:50,798:INFO:letsencrypt.cli:Saving debug log to /var/log/letsencrypt/letsencrypt.log
2015-12-04 08:18:50,807:DEBUG:letsencrypt.cli:letsencrypt version: 0.1.0
2015-12-04 08:18:50,807:DEBUG:letsencrypt.cli:Arguments: ['-v', '--debug', '--apache', '-d', 'www.3chirurgen.de', '-d', '3chirurgen.de', '-d', 'incentergy.de', '-d', 'www.incentergy.de', '-d', 'shop.incentergy.de']
2015-12-04 08:18:50,809:DEBUG:letsencrypt.cli:Discovered plugins: PluginsRegistry(PluginEntryPoint#apache,PluginEntryPoint#webroot,PluginEntryPoint#null,PluginEntryPoint#manual,PluginEntryPoint#standalone)
2015-12-04 08:18:50,814:DEBUG:letsencrypt.cli:Requested authenticator apache and installer apache
2015-12-04 08:18:50,820:DEBUG:letsencrypt.plugins.disco:No installation (PluginEntryPoint#apache):
Traceback (most recent call last):
File "/home/ec2-user/.local/share/letsencrypt/local/lib/python2.7/site-packages/letsencrypt/plugins/disco.py", line 103, in prepare
self._initialized.prepare()
File "/home/ec2-user/.local/share/letsencrypt/local/lib/python2.7/site-packages/letsencrypt_apache/configurator.py", line 142, in prepare
raise errors.NoInstallationError
NoInstallationError
2015-12-04 08:18:50,821:DEBUG:letsencrypt.display.ops:No candidate plugin
2015-12-04 08:18:50,821:DEBUG:letsencrypt.cli:Selected authenticator None and installer None
Я буду копаться в этом позже.
./letsencrypt-auto -v
Updating letsencrypt and virtual environment dependencies...
Requirement already up-to-date: setuptools in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages
Requirement already up-to-date: pip in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages
Requirement already up-to-date: letsencrypt in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages
Requirement already up-to-date: letsencrypt-apache in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages
Requirement already up-to-date: zope.interface in /home/ec2-user/.local/share/letsencrypt/lib64/python2.7/site-packages (from letsencrypt)
Requirement already up-to-date: setuptools in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Requirement already up-to-date: python2-pythondialog>=3.2.2rc1 in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Collecting PyOpenSSL (from letsencrypt)
Using cached pyOpenSSL-0.15.1-py2.py3-none-any.whl
Requirement already up-to-date: requests in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Collecting cryptography>=0.7 (from letsencrypt)
Using cached cryptography-1.1.2.tar.gz
Requirement already up-to-date: parsedatetime in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Requirement already up-to-date: configobj in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Requirement already up-to-date: pytz in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Collecting psutil>=2.1.0 (from letsencrypt)
Using cached psutil-3.3.0.tar.gz
Requirement already up-to-date: six in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Requirement already up-to-date: acme==0.1.1 in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Requirement already up-to-date: zope.component in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Requirement already up-to-date: mock in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Requirement already up-to-date: ConfigArgParse in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt)
Collecting pyrfc3339 (from letsencrypt)
Using cached pyRFC3339-1.0-py2.py3-none-any.whl
Requirement already up-to-date: python-augeas in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from letsencrypt-apache)
Requirement already up-to-date: idna>=2.0 in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from cryptography>=0.7->letsencrypt)
Requirement already up-to-date: pyasn1>=0.1.8 in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from cryptography>=0.7->letsencrypt)
Requirement already up-to-date: enum34 in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from cryptography>=0.7->letsencrypt)
Requirement already up-to-date: ipaddress in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from cryptography>=0.7->letsencrypt)
Collecting cffi>=1.1.0 (from cryptography>=0.7->letsencrypt)
Using cached cffi-1.4.2.tar.gz
Requirement already up-to-date: ndg-httpsclient in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from acme==0.1.1->letsencrypt)
Collecting werkzeug (from acme==0.1.1->letsencrypt)
Using cached Werkzeug-0.11.3-py2.py3-none-any.whl
Requirement already up-to-date: zope.event in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from zope.component->letsencrypt)
Requirement already up-to-date: funcsigs in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from mock->letsencrypt)
Requirement already up-to-date: pbr>=0.11 in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from mock->letsencrypt)
Requirement already up-to-date: pycparser in /home/ec2-user/.local/share/letsencrypt/lib/python2.7/dist-packages (from cffi>=1.1.0->cryptography>=0.7->letsencrypt)
Installing collected packages: cffi, cryptography, PyOpenSSL, psutil, pyrfc3339, werkzeug
Running setup.py install for cffi
Running setup.py install for cryptography
Running setup.py install for psutil
Successfully installed PyOpenSSL cffi cryptography psutil pyrfc3339 werkzeug
Requesting root privileges to run with virtualenv: sudo /home/ec2-user/.local/share/letsencrypt/bin/letsencrypt -v
Traceback (most recent call last):
File "/home/ec2-user/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module>
from letsencrypt.cli import main
File "/home/ec2-user/.local/share/letsencrypt/local/lib/python2.7/dist-packages/letsencrypt/cli.py", line 17, in <module>
import OpenSSL
ImportError: No module named OpenSSL
pip install pyopenssl
не решает эту проблему.
Итак, я считаю, что нашел решение этой проблемы.
Все сводится к запуску от имени пользователя root или запуску через sudo, использованию нескольких местоположений пакетов для установки pip (lib/lib64, site-packages/dist-packages, /usr vs /usr/local).
Я столкнулся с этой похожей проблемой:
http://stackoverflow.com/questions/33661818/python-virtualenv-importerror-with-celery-and-billiard
Оказывается, версии pip и virtualenv, которые поставляются с Amazon Linux, даже в последней версии AMI, устарели и (возможно) содержат ошибки в том, как lib64/dist-packages обрабатывается для виртуальных сред.
Обновление обеих программ через pip, а затем воссоздание виртуальной среды, по-видимому, устраняет проблему при запуске установки от имени пользователя root (без использования sudo). Решения, приведенные в других потоках, и этот для запуска pip из папки virtualenv для переустановки зависимостей, устраняют симптом, а не причину.
Аналогичная проблема сообщается здесь:
https://community.letsencrypt.org/t/letsencrypt-auto-openssl-module-not-found-ec2/4356
решение eric-tucker выше сработало и для меня. Спасибо!
Пришел сюда из Google, имел аналогичные проблемы со всеми скомпилированными модулями Python в virtualenv на последней версии Amazon Linux 2015.09.1.
eric-tucker прав, здесь помогает обновление virtualenv вручную.
Я обнаружил, что виновником была переменная env PYTHON_INSTALL_LAYOUT=amzon
, которая по умолчанию не установлена в Amazon Linux, и тогда вы не замечаете проблему. Но как только это установлено, все не работает с версией virtualenv по умолчанию, потому что пакеты устанавливаются в lib64/python2.7/dist-packages
, и это не добавляется site.py
virtualenv (по крайней мере, не в версии, которая исходит от rpm; добавляется только lib/python2.7/dist-packages
).
Сложная часть, по крайней мере для меня, заключалась в том, чтобы выяснить, какой пакет определил для меня эту переменную. Оказалось, что это было вызвано установкой группы « @Development tools» yum и, в частности, пакета system-rpm-config
. Не так уж и очевидно...
Да! Я решил!. Спасибо, Эрик-Такер!
Я выполнил следующую команду.
# pip install pip --upgrade
# pip install virtualenv --upgrade
# virtualenv -p /usr/bin/python27 venv27
# . venv27/bin/activate
# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt
# ./letsencrypt-auto certonly --debug --standalone -d <domain-name>
Обновление @skatsumata на 2017 год и certbot-auto:
# rm /root/.local/share/letsencrypt/ -Rf
# pip install pip --upgrade
# pip install virtualenv --upgrade
# virtualenv -p /usr/bin/python27 venv27
# . venv27/bin/activate
# ./certbot-auto renew --debug #(or whatever your relevant command is)
Мне нужно было только запустить sudo yum install python27-devel
, чтобы это сработало для меня, спасибо!
@zarmstrong Большое спасибо, это работает. Кстати, я хочу настроить cron для автоматического обновления. Как мне это сделать с вашим решением?
Не уверен, что это сработает, не проверено. Но вы можете попробовать.
#!/bin/bash
date
cd /root
source venv27/bin/activate
./certbot-auto renew --debug
/etc/init.d/httpd reload
Обязательно перенаправьте вывод в какой-либо журнал и убедитесь, что он работает.
Это должно быть исправлено в следующем выпуске #4978.
@bmw Я не верю, что это было исправлено. Я все еще сталкиваюсь с этой проблемой lib/lib64 в средах AWS Elastic Beanstalk с последней версией certbot, загруженной следующим образом:
wget https://dl.eff.org/certbot-auto; chmod a+x certbot-auto
# cat /etc/system-release
Amazon Linux AMI release 2017.09
[root@ip-172-31-10-255 venv]# /certbot/certbot-auto --debug renew
Error: couldn't get currently installed version for /opt/eff.org/certbot/venv/bin/letsencrypt:
Traceback (most recent call last):
File "/opt/eff.org/certbot/venv/bin/letsencrypt", line 7, in <module>
from certbot.main import main
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/certbot/main.py", line 10, in <module>
import josepy as jose
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/__init__.py", line 41, in <module>
from josepy.interfaces import JSONDeSerializable
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/interfaces.py", line 8, in <module>
from josepy import errors, util
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/util.py", line 4, in <module>
import OpenSSL
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/rand.py", line 12, in <module>
from OpenSSL._util import (
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/_util.py", line 6, in <module>
from cryptography.hazmat.bindings.openssl.binding import Binding
ImportError: No module named cryptography.hazmat.bindings.openssl.binding
Я сбит с толку тем, сколько проблем у нас возникает с зависимостями Python, а что нет.
Хотя, если вы устанавливаете certbot через pip, я думаю, что все работает. Вы пробовали это @utdrmac ? Я знаю, что это решило многие мои проблемы.
Не знал, что установка через pip была опцией. Я следил за некоторыми сообщениями в блогах об использовании certbot на beanstalk, и их скрипты загрузили его, как я указал выше. Возможно, сообщение в блоге устарело. Тестирование через pip сейчас:
# rm -rf /opt/eff.org/*
# pip install -U certbot
# certbot renew --debug
Кажется, заработало! Я изменю свои сценарии, чтобы установить certbot с помощью системного pip вместо того, чтобы загружать его напрямую. Возможно, в этом отношении есть какая-то проблема со встроенным установщиком/обновителем certbots?
Честно говоря, я понятия не имею, почему установка через pip не рекомендуется для ВСЕХ операционных систем.
Оригинальное решение загрузки файла, который пытается настроить виртуальную среду и с треском терпит неудачу в половине случаев, необходимых для DIAF.
Ошибка связана с путем python и использованием dist-packages
. Мы можем добавить конфигурацию пути, например, dist.pth
, к /opt/eff.org/certbot/venv/lib64/python2.7/site-packages/dist.pth
. Однако файлы pth
обрабатываются только в том случае, если они находятся в каталоге сайта (например, site-packages
), а файлы pth
по вновь назначенному пути (т. е. dist-packages) будут не быть прочитанным. Мы создаем sitecustomize.py в /opt/eff.org/certbot/venv/lib64/python2.7/site-packages/
со следующим:
import site
site.addsitedir('/opt/eff.org/certbot/venv/lib64/python2.7/dist-packages')
sitecustomize.py
устанавливает dist-packages в качестве каталога сайта и успешно считывает zope.interface-4.4.3-py2.7-nspkg.pth
. Это позволяет избежать ошибки $ from zope.interface import Interface
ImportError
.
Кроме того, я обнаружил, что /usr/local/bin/certbot-auto
повторно создает виртуальную среду venv
. Это приведет к той же ошибке пути python, которую мы пытаемся избежать. Я рекомендую применить описанное выше и вручную найти сценарий активации в venv
; например, . /opt/eff.org/certbot/venv/bin/activate
.
Я предпочитаю этот подход, потому что он позволяет избежать нападок на пакеты python системного уровня.
Не то чтобы это говорило о чем-то другом, чем указано выше, но быстрое исправление для меня на certbot 0.21.1 заключалось в том, чтобы эффективно «переместить» привязки криптографии hazmat туда, где ищет пользовательская версия python letsencrypt:
cd /opt/eff.org/certbot/venv/lib64/python2.7
mv site-packages site-packages.sav
ln -s dist-packages/ site-packages
Это работает для меня, потому что для меня site-packages/subdir пуст. И чтобы было ясно, это устраняет следующую ошибку, которая появляется в последних версиях certbot в Amazon Linux, для меня certbot 0.21.0 и 0.21.1:
<snip>
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/OpenSSL/_util.py", line 6, in <module>
from cryptography.hazmat.bindings.openssl.binding import Binding
ImportError: No module named cryptography.hazmat.bindings.openssl.binding
Ответ, который написал @utdrmac , — это то, что я в итоге использовал, спасибо, Мэтью!
Но я получил ошибку: "The requested apache plugin does not appear to be installed"
Так я и сделал: sudo -H pip install certbot-apache
у меня была такая же ошибка, и я как-то решил ее
Поскольку у меня было две версии установки python, python 2 и 3, мне пришлось выяснить, какая из них использовалась на certbot/letencrypt. что один сообщит об ошибке при попытке импортировать криптографию....
в командной строке
python
from cryptography.hazmat.bindings._constant_time import lib
нет ошибки импорта, поэтому я сделал то же самое с python3 и получил ошибку No module named '_cffi_backend
. Итак, я просто установил модуль cffi с помощью pip3.
sudo -H pip3 install cffi
sudo -H, потому что это было необходимо как глобальный пакет
сделал certbot help
затем получил ошибку импорта для urllib3
. Установил с помощью pip3 и теперь все работает нормально.
Надеюсь, кто-то найдет это полезным
У меня тоже была эта проблема на экземпляре AWS EC2, которую я просто исправил, запустив решение @utdrmac от имени пользователя root. Он обновлялся до certbot 0.22.0
Большое спасибо @utdrmac за решение. Я пробовал так много вещей за последние два дня, и ничего не сработало.
Я столкнулся с этой проблемой сегодня и обнаружил, что решение @utdrmac не работает на AWS EC2 с Amazon Linux AMI 2017.09. Ошибка, с которой я сталкиваюсь на последнем шаге:
$ sudo certbot renew --debug
/usr/lib64/python2.6/dist-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. The next version of cryptography will drop support for Python 2.6
DeprecationWarning
Traceback (most recent call last):
File "/usr/bin/certbot", line 7, in <module>
from certbot.main import main
File "/usr/lib/python2.6/dist-packages/certbot/main.py", line 11, in <module>
import zope.component
File "/usr/lib/python2.6/dist-packages/zope/component/__init__.py", line 28, in <module>
from zope.component.globalregistry import getGlobalSiteManager
File "/usr/lib/python2.6/dist-packages/zope/component/globalregistry.py", line 18, in <module>
from zope.interface.registry import Components
File "/usr/lib64/python2.6/dist-packages/zope/interface/registry.py", line 167
filtered_state = {k: v for k, v in reduction[2].items()
^
SyntaxError: invalid syntax
Чтобы запустить certbot, я был вынужден расширить это решение, установив более новый Python и используя его, таким образом:
sudo rm -rf /opt/eff.org/*
sudo yum -y install python36 python36-pip python36-libs python36-tools python36-virtualenv
sudo /usr/bin/pip-3.6 install -U certbot
sudo /usr/bin/pip-3.6 install certbot-apache
sudo /usr/local/bin/certbot renew --debug
Обратите внимание, что я отдельно sudo
каждую команду в этом предложении, потому что, когда я попытался собрать их все вместе (как в sudo su -
), эта последовательность шагов не удалась, потому что некоторые старые настройки Python загрязняют среду, вызывая certbot в любом случае потерпит неудачу.
@wwkimball Честно говоря, мое решение/проблема касалось Elastic Beanstalk. Кажется, я также использую AMI 2017.09, поэтому не знаю, почему ваш отличается от всех остальных.
Я столкнулся с той же проблемой. Вот что решило это для меня:
/opt/eff.org/certbot/venv/local/bin/pip установить криптографический интерфейс
Решение @gmegidish решило эту проблему для меня.
У меня не работало ничего, кроме https://github.com/certbot/certbot/issues/1680#issuecomment -374046383 @wwkimball .
Спасибо за решение! :100:
FWIW, это то, что я собрал для работы на моем экземпляре AWS Linux:
#!/bin/bash -x
# If run in cron, add /usr/local to cron's sanitized PATH
export PATH=$PATH:/usr/local/sbin:/usr/local/bin
INSTALLED=/usr/local/bin
$INSTALLED/certbot-auto $@
if [ $? -ne 0 ]; then
# certbot-auto used venv to install modules, but something
# about the way it put things together put pieces in a subdir
# that python doesn't look in by default on AWS Linux. Fix it.
BASEDIR="/opt/eff.org/certbot/venv/lib64/python2.7"
cat << " EOM"
1. Getting rid of empty $BASEDIR/site-packages.
2. Create symlink "site-packages" to "dist-packages/".
EOM
if [ -d $BASEDIR ]; then
cd $BASEDIR
rm -rf site-packages
ln -s dist-packages/ site-packages
else
echo "ERROR: $BASEDIR doesn't exist, python version changed?"
fi
$INSTALLED/certbot-auto $@
fi
Я решил оставить переменную INSTALLED
на месте на тот случай, если кто-то захочет установить скрипт certbot-auto
не по пути. Я называю его run_certbot.sh и вызываю его с аргументами, которые хочу передать certbot-auto:
run_certbot.sh renew --debug
@mrballcb Спасибо! работать отлично.
sudo pip3 install cryptography
sudo pip3 install interface
работал на меня
./certbot-auto --без начальной загрузки
Это сработало для меня
Мне удалось установить и успешно запустить certbot на Amazon Linux 1 с помощью метода pip (python36, который включает pip). Метод yum обнаружил следующие ошибки, которые я не мог диагностировать.
Complete!
Creating virtual environment...
Traceback (most recent call last):
File "<stdin>", line 27, in <module>
File "<stdin>", line 19, in create_venv
File "/usr/lib64/python2.7/subprocess.py", line 185, in check_call
retcode = call(*popenargs, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 172, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib64/python2.7/subprocess.py", line 394, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1047, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
@ micharu123 micharu123 Спасибо за ваш пост, ваше решение решило ту же проблему для меня. Ваше здоровье
У меня были некоторые из тех же проблем, которые упоминаются здесь, и решение заключалось в том, чтобы просто переместить исполняемый файл «certbot-auto» в /usr/local/bin/ . Это немедленно исправило каждую ошибку на моем сервере AWS.
Самый полезный комментарий
Не знал, что установка через pip была опцией. Я следил за некоторыми сообщениями в блогах об использовании certbot на beanstalk, и их скрипты загрузили его, как я указал выше. Возможно, сообщение в блоге устарело. Тестирование через pip сейчас:
Кажется, заработало! Я изменю свои сценарии, чтобы установить certbot с помощью системного pip вместо того, чтобы загружать его напрямую. Возможно, в этом отношении есть какая-то проблема со встроенным установщиком/обновителем certbots?