certbot cho mô-đun pyopenssl bị thiếu


10

Tôi cần trợ giúp để thiết lập CertBot cho LetsEncrypt

Tôi đang chạy trên CentOS 7 với Python 2.7

Khi tôi chạy certbot, tôi gặp lỗi sau:

[root@li86-193 frappe-bench]#certbot certonly --manual

Traceback (most recent call last):
  File "/usr/bin/certbot", line 7, in <module>
    from certbot.main import main
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 10, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 31, in <module>
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()
  File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 112, in inject_into_urllib3
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 147, in _validate_dependencies_met
    raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

[root@li86-193 frappe-bench]# pip show certbot
Name: certbot
Version: 0.11.1
Summary: ACME client
Home-page: https://github.com/letsencrypt/letsencrypt
Author: Certbot Project
Author-email: client-dev@letsencrypt.org
License: Apache License 2.0
Location: /usr/lib/python2.7/site-packages
Requires: ConfigArgParse, configobj, zope.component, pytz, setuptools, cryptography, zope.interface, pyrfc3339, mock, parsedatetime, six, acme, PyOpenSSL

[root@li86-193 frappe-bench]# pip show pyopenssl
Name: pyOpenSSL
Version: 16.2.0
Summary: Python wrapper module around the OpenSSL library
Home-page: https://pyopenssl.readthedocs.io/
Author: Hynek Schlawack
Author-email: hs@ox.cx
License: Apache License, Version 2.0
Location: /usr/lib/python2.7/site-packages
Requires: six, cryptography

Xin hãy giúp đỡ

Cảm ơn bạn


Vui lòng sửa bài đăng của bạn để có thể đọc được, các dấu vết bị rối tung ... Ngoài ra, vui lòng bao gồm cách bạn đã cài đặt certbot, những gì bạn đã làm để thử và làm cho nó hoạt động cho đến nay và bất kỳ thông tin nào thực sự có thể giúp chúng tôi hiểu lý do tại sao bạn đang gặp lỗi này
Ginnungagap

Vui lòng xem nhận xét của tôi về giải pháp bằng virtualenv
Danie

Câu trả lời:


7

Đừng cố cài đặt certbot thủ công trên các hệ thống CentOS / RHEL. Nó chỉ làm cho một mớ hỗn độn lớn. Thay vào đó, cài đặt nó từ EPEL.

yum install epel-release
yum install certbot

1
Tôi đã cài đặt từ epel, và vẫn đang gặp vấn đề tương tự
chrismarx

7
Tôi chạy gói certbot EPEL và giải quyết vấn đề này. Một cái gì đó khác trong hệ thống của tôi đã cập nhật thư viện 'request' lên bản mới nhất (2.13.0 kể từ khi viết bài này), nhưng RPM được cài đặt làm phụ thuộc cho certbot là 2.6.0. So sánh các phiên bản cho pip list 2>/dev/null | grep requestsrpm -q python-requests --queryformat '%{VERSION}\n'. Nếu chúng khác nhau, hãy thử pip install --upgrade --force-reinstall 'requests==2.6.0'.
Alan Ivey

4

Tôi đã gặp vấn đề tương tự hai lần trên 2 hệ thống Centos7 riêng biệt trong 2 tháng qua. Đây là những gì làm việc cho tôi:

  • yum remove pyOpenSSL [Điều này sẽ xóa certbot được cài đặt qua epel]
  • yum cài đặt openssl-devel python-devel [Có thể hoặc không thực sự cần thiết]
  • cài đặt certbot
  • Pip cài đặt certbot-apache

Sau khi hoàn thành các bước này, tôi đã có thể gia hạn thành công chứng chỉ của mình với certbot.


1
Điều này đã làm việc. urllib3 bị lẫn lộn giữa các pip được cài đặt và các phiên bản cài đặt yum của pyOpenSSL. Loại bỏ các gói yum và cài đặt với pip xuất hiện để sửa lỗi này.
scoota269

Sau khi áp dụng ba lệnh đầu tiên đó, tôi gặp lỗi followin: UnknownExtra: requests 2.6.0 has no such extra feature 'security'khi tôi thực thi$ certbot certonly ...
Pathros

3

Tôi đang gặp vấn đề tương tự. Sử dụng python venv tôi đã có thể khiến certbot hoạt động bằng pip.

Các bước: Cài đặt virtualenv

pip install virtualenv --upgrade

Tạo một virtualenv

virtualenv -p /usr/bin/python2.7 certbot

Kích hoạt certbotvirtualenv

. /root/certbot/bin/activate

Lời nhắc của bạn có thể biến thành một cái gì đó như thế này

(certbot) [root@hostname ~]#

Sau đó pip cài đặt certbot

pip install certbot

Sau khi hoàn thành, bạn có thể kiểm tra certbotlệnh theo certbotvirtualenv, nhưng điều này không thực tế nếu bạn định sử dụng cron để thiết lập gia hạn certbot. Vì vậy, hủy kích hoạt môi trường ảo,

(certbot) [root@hostname ~]# deactivate

Bây giờ hãy chạy lệnh certbot từ

/root/certbot/bin/certbot

2

Điều này dường như đang làm việc cho tôi.

Lấy một vòng / phút từ đây: http://rpm.pbone.net/index.php3/stat/4/idpl/31446026/dir/centos_7/com/pyOpenSSL-0.15.1-1.el7.noarch.rpm.html

wget ftp://ftp.muug.mb.ca/mirror/centos/7.2.1511/cloud/x86_64/openstack-mitaka/common/pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo yum install certbot

Mô-đun "ImportError: 'pyOpenSSL' thiếu chức năng cần thiết. Hãy thử nâng cấp lên v0,14 hoặc mới hơn." Tôi đã gặp phải vấn đề này và cuối cùng đã giải quyết bằng cách cài đặt 'pyOpenSSL-0.15.1-1.el7.noarch.rpm'
kai.fantasy

2

Cách khắc phục chính xác là:

mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL

Cảm ơn cnritng frim github.


Đã làm phép thuật ngay lập tức.
j4hangir

1

Không trộn yumcác gói đã cài đặt qua các gói pip. Các sửa chữa thích hợp liên quan đến việc loại bỏ các gói pip và cài đặt mọi thứ từ yum. Tôi đã phác thảo nó ở đây .

Bạn không cần pyOpenSSL mới hơn trên CentOS 7 để chạy certbot!

pip uninstall requests
yum reinstall python-requests

pip uninstall six
yum reinstall python-six

pip uninstall urllib3
yum reinstall python-urllib3

0

Tôi đã có cùng một vấn đề trong 0.9.3. Nó được gây ra bằng cách cài đặt plugin nginx.

Bạn có thể dễ dàng tái tạo một cài đặt làm việc:

docker run -it --rm centos: centos7 bash yum -y cài đặt epel-phát hành yum -y cài đặt certbot certbot -h


bất kỳ cách giải quyết?
chrismarx

Không biết vấn đề ở đâu. Tôi đã cài đặt lại CentOS và nó đã hoạt động ngay bây giờ :(
cs378

0

chỉ làm cho nó hoạt động bằng cách chạy

sudo pip install pyOpenSSL==0.14.0

nó loại bỏ phiên bản 0.13 và cài đặt 0.14, sau đó certbot chỉ hoạt động bình thường.


Tôi nhận được những điều sau:ERROR: Cannot uninstall 'pyOpenSSL'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
Pathros

0

Có vẻ như phiên bản của nguồn epel đã quá cũ, bạn có thể xóa certbot của phiên bản yum và cài đặt nó


-4

Thay vì certbot, máy khách letencrypt đã giải quyết cho tôi vấn đề.

Bạn có thể xóa (các) ứng dụng khách khác

pip uninstall certbot
pip uninstall pyopenssl

Và sau đó cài đặt letencrypt:

pip install letsencrypt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.