certbot สำหรับ letsencrypt โมดูล pyopenssl ที่ขาดหายไป


10

ฉันต้องการความช่วยเหลือในการตั้งค่า CertBot สำหรับ LetsEncrypt

ฉันกำลังใช้งาน CentOS 7 ด้วย Python 2.7

เมื่อฉันเรียกใช้ certbot ฉันได้รับข้อผิดพลาดต่อไปนี้:

[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

โปรดช่วยด้วย

ขอบคุณ


โปรดแก้ไขการโพสต์ของคุณเพื่อให้สามารถอ่านได้การติดตามกลับจะเกิดความสับสน ... นอกจากนี้โปรดระบุวิธีที่คุณติดตั้ง certbot สิ่งที่คุณทำเพื่อลองและใช้งานได้จนถึงตอนนี้และข้อมูลใด ๆ ที่อาจช่วยให้เราเข้าใจว่าทำไมคุณได้รับข้อผิดพลาดนี้
Ginnungagap

โปรดดูความคิดเห็นของฉันสำหรับการแก้ปัญหาโดยใช้ virtualenv
Danie

คำตอบ:


7

อย่าพยายามติดตั้ง certbot ด้วยตนเองบนระบบ CentOS / RHEL มันทำให้เป็นระเบียบมาก ให้ติดตั้งจาก EPEL แทน

yum install epel-release
yum install certbot

1
ฉันติดตั้งจาก epel และฉันยังคงได้รับปัญหาเดียวกัน
chrismarx

7
ฉันเรียกใช้แพคเกจ certbot ของ EPEL และแก้ไขปัญหานี้ มีสิ่งอื่นในระบบของฉันได้อัปเดตห้องสมุด 'คำขอ' เป็นล่าสุด (2.13.0 ตามการเขียนนี้) แต่ RPM ที่ติดตั้งเป็นการอ้างอิงสำหรับ certbot คือ 2.6.0 รุ่นเปรียบเทียบสำหรับและpip list 2>/dev/null | grep requests หากพวกเขากำลังที่แตกต่างกันลองrpm -q python-requests --queryformat '%{VERSION}\n' pip install --upgrade --force-reinstall 'requests==2.6.0'
Alan Ivey

4

ฉันประสบปัญหาเดียวกันนี้สองครั้งในระบบ Centos7 2 ระบบในช่วง 2 เดือนที่ผ่านมา นี่คือสิ่งที่ได้ผลสำหรับฉัน:

  • yum remove pyOpenSSL [สิ่งนี้จะลบ certbot ที่ติดตั้งผ่าน epel]
  • yum install openssl-devel python-devel [อาจจริงหรืออาจไม่จำเป็น]
  • pip ติดตั้ง certbot
  • pip ติดตั้ง certbot-apache

หลังจากทำตามขั้นตอนเหล่านี้ฉันสามารถต่ออายุใบรับรองของฉันด้วย certbot ได้สำเร็จ


1
สิ่งนี้ใช้ได้ผล urllib3 สับสนระหว่างการติดตั้ง pip และ yum ที่ติดตั้งเวอร์ชั่นของ pyOpenSSL การลบแพ็คเกจ yum และการติดตั้งด้วย pip ดูเหมือนจะแก้ไขได้
scoota269

หลังจากใช้สามคำสั่งแรกฉันได้รับข้อผิดพลาด followin: UnknownExtra: requests 2.6.0 has no such extra feature 'security'เมื่อฉันรัน$ certbot certonly ...
Pathros

3

ฉันพบปัญหาเดียวกัน การใช้ python venv ฉันสามารถทำให้ certbot ทำงานโดยใช้ pip ได้

ขั้นตอน: ติดตั้ง virtualenv

pip install virtualenv --upgrade

สร้าง virtualenv

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

เปิดใช้งานcertbotvirtualenv

. /root/certbot/bin/activate

ข้อความแจ้งของคุณอาจกลายเป็นอะไรแบบนี้

(certbot) [root@hostname ~]#

จากนั้นทำการติดตั้ง certbot

pip install certbot

เมื่อเสร็จแล้วคุณสามารถทดสอบcertbotคำสั่งภายใต้certbotvirtualenv แต่สิ่งนี้ไม่เป็นประโยชน์หากคุณจะใช้ cron เพื่อตั้งค่าการต่ออายุ certbot ดังนั้นปิดสภาพแวดล้อมเสมือนจริง

(certbot) [root@hostname ~]# deactivate

ตอนนี้รันคำสั่ง certbot จาก

/root/certbot/bin/certbot

2

ดูเหมือนว่าจะใช้งานได้สำหรับฉัน

คว้ารอบต่อนาทีจากที่นี่: 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

"ImportError: โมดูล 'pyOpenSSL' ขาดฟังก์ชั่นที่จำเป็นลองอัพเกรดเป็น v0.14 หรือใหม่กว่า" ฉันพบปัญหานี้และแก้ไขได้ในที่สุดโดยการติดตั้ง 'pyOpenSSL-0.15.1-1.el7.noarch.rpm'
kai.fantasy


1

ไม่ผสมyumแพคเกจติดตั้งผ่านpipคน การแก้ไขที่เหมาะสมเกี่ยวกับการแพคเกจการลบ pip yumและติดตั้งทุกอย่างจาก ผมได้อธิบายมันนี่

คุณไม่ต้องการ pyOpenSSL ที่ใหม่กว่าบน CentOS 7 เพื่อเรียกใช้ certbot!

pip uninstall requests
yum reinstall python-requests

pip uninstall six
yum reinstall python-six

pip uninstall urllib3
yum reinstall python-urllib3

0

ฉันมีปัญหาเดียวกันใน 0.9.3 มันเกิดจากการติดตั้งปลั๊กอิน nginx

คุณสามารถสร้างการติดตั้งที่ใช้งานได้:

นักเทียบท่าวิ่ง - มัน - เซ็นต์ Centos: centos7 ทุบตี yum - ฉันติดตั้ง epel- ปล่อย yum - ฉันติดตั้ง certbot certbot -h


วิธีแก้ปัญหาใด ๆ
chrismarx

ไม่ทราบว่าปัญหาเกิดขึ้นที่ใด ฉันติดตั้ง CentOS ใหม่และมันทำงานได้ทันที :(
cs378

0

เพิ่งทำให้มันใช้งานได้

sudo pip install pyOpenSSL==0.14.0

มันลบรุ่น 0.13 และติดตั้ง 0.14 จากนั้น certbot ก็ทำงานได้ตามปกติ


ฉันได้รับต่อไปนี้: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

ดูเหมือนว่ารุ่นของแหล่งที่มาของ epel นั้นเก่าเกินไปคุณสามารถลบ certbot ของ yum version และ pip ​​ติดตั้งได้


-4

certbot แทนไคลเอ็นต์ allowencrypt แก้ปัญหาให้ฉันแทน

คุณสามารถลบลูกค้าอื่น ๆ

pip uninstall certbot
pip uninstall pyopenssl

จากนั้นติดตั้ง letsencrypt:

pip install letsencrypt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.