Žyg*_*kas 5 pyopenssl python-2.7 certbot
我正在尝试使用Certbot续订Let's Encrypt证书.它停止工作,我不知道为什么.这是错误:
ImportError: /root/.local/share/letsencrypt/local/lib/python2.7/site-packages/cryptography/
hazmat/bindings/_openssl.so: undefined symbol: OPENSSL_sk_num
Run Code Online (Sandbox Code Playgroud)
我安装了最新的OpenSSL版本
OpenSSL 1.1.0d 26 Jan 2017
Run Code Online (Sandbox Code Playgroud)
我尝试通过执行以下操作来调试此问题.首先我尝试在python控制台中添加导入OpenSSL.它工作得很好,没有错误.但是,当我尝试
. ~/.local/share/letsencrypt/bin/activate
Run Code Online (Sandbox Code Playgroud)
然后>>> import OpenSSl
我得到错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/OpenSSL/rand.py", line 12, in <module>
from OpenSSL._util import (
File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/OpenSSL/_util.py", line 6, in <module>
from cryptography.hazmat.bindings.openssl.binding import Binding
File "/root/.local/share/letsencrypt/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 14, in <module>
from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: /root/.local/share/letsencrypt/local/lib/python2.7/site-packages/cryptography/hazmat/bindings/_openssl.so: undefined symbol: OPENSSL_sk_num
Run Code Online (Sandbox Code Playgroud)
我尝试删除/root/.local/share/letsencrypt/路径,然后尝试再次运行certbot-auto.我仍然得到同样的错误.是否有人遇到这个问题并知道解决方案?请帮帮我.需要续签少量证书.
更新:
我发现问题来源,在/lib/x86_64-linux-gnu目录中有一个旧版本的libssl.so.1.0.0,它没有OPENSSL_sk_num.当我尝试更换较新版本的libssl1.1(它确实有OPENSSL_sk_num),然后我得到它需要的错误OPENSSL_VERSION 1.0.1.然后经过一些努力从/ usr目录和本地目录中删除库后,我得到错误ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory.我怎样才能改变它让letsencrypt使用更新的库?
解
经过一番挣扎.我刚刚重新安装了openssl 1.1.0c版.从另一个项目复制了letsencrypt库并且它工作正常.我认为一些升级破坏了它.所以我建议大家在运行letsencrypt时只需使用--no-self-upgrade选项.
解决方案更新
在遇到这个问题后,我又决定以正确的方式解决它.所以基本上你需要用命令重新编译openssl 1.1.0c:
./config -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)' 和 make
将编译的程序libcrypto.so.1.1,并libssl.so.1.1以/usr/lib/x86_64-linux-gnu
然后你需要重做或只修改libcrypto和libssl符号链接.通过在/usr/lib/x86_64-linux-gnu文件夹中输入命令ln -s libssl.so.1.1 libssl和ln -s libcrypto.so.1.1 libcrypto.
然后输入以下命令:
cd ~/.local/share/letsencrypt/bin/
./pip uninstall cryptography pyopenssl -y
./pip install --upgrade pip
rm -rf ~/.cache/
./pip install cryptography pyopenssl
Run Code Online (Sandbox Code Playgroud)
你完成了,一切都应该正常工作.
小智 0
我undefined symbol: OPENSSL_sk_num自己编译openssl后也出现这个错误。我可以通过删除之前创建的 openssl 目录~/.local/share并重新开始来解决该问题。这一定是一些缓存和/或错误的库路径问题。
| 归档时间: |
|
| 查看次数: |
5380 次 |
| 最近记录: |