Ich versuche, Let's Encrypt Zertifikat mit Certbot zu erneuern. Es hat aufgehört zu arbeiten und ich weiß nicht warum. Hier ist der Fehler:undefined Symbol: OPENSSL_sk_num
ImportError: /root/.local/share/letsencrypt/local/lib/python2.7/site-packages/cryptography/
hazmat/bindings/_openssl.so: undefined symbol: OPENSSL_sk_num
I neueste OpenSSL-Version installiert haben
OpenSSL 1.1.0d 26 Jan 2017
ich das Debuggen dieses Problem versucht, indem Sie folgendermaßen vorgehen. Zuerst habe ich gerade versucht, Import OpenSSL in Python-Konsole hinzuzufügen. Es hat perfekt funktioniert, keine Fehler. Aber wenn ich versuche,
. ~/.local/share/letsencrypt/bin/activate
Dann >>> import OpenSSl
ich Fehler:
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
Ich versuchte, den /root/.local/share/letsencrypt/ Weg zu entfernen versuchte dann wieder certbot-Auto zu laufen. Trotzdem bekomme ich den gleichen Fehler. Gibt es jemanden, der mit diesem Problem konfrontiert war und die Lösung kannte? Bitte helfen Sie mir hier draußen. Müssen einige wenige Zertifikate erneuern.
UPDATE:
I'v fand das Problem Quelle, die dort in /lib/x86_64-linux-gnu
Verzeichnis eine alte Version von libssl.so.1.0.0 ist und es nicht OPENSSL_sk_num
hat. Wenn ich versuche, durch neuere Version libssl1.1 zu ersetzen (es hat OPENSSL_sk_num
), dann erhalte ich einen Fehler, der OPENSSL_VERSION 1.0.1
erfordert. Dann, nach einiger Mühe, die Bibliotheken aus/usr-Verzeichnissen und lokalen Verzeichnissen löscht, erhalte ich den Fehler ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory
. Wie kann ich es ändern, so Letsencrypt verwendet neuere Bibliothek?
SOLUTION
Nach einigem Kampf. Ich habe gerade OpenSSL Version 1.1.0c neu installiert. Kopierte letsencrypt Bibliothek von einem anderen Projekt und es funktionierte. Ich denke, ein Upgrade hat es ruiniert. Also schlage ich jedem vor, wenn Sie Letsencrypt laufen lassen - benutzen Sie einfach die Option --no-self-upgrade.
LÖSUNG UPDATE
Nachdem dieses Problem noch einmal begegnete ich beschlossen, es der richtige Weg zu lösen. Also im Grunde brauchen Sie OpenSSL 1.1.0c mit Befehl neu kompilieren:
./config -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)'
und make
Kopieren Sie die kompilierten libcrypto.so.1.1
und libssl.so.1.1
-/usr/lib/x86_64-linux-gnu
Dann müssen Sie wiederholen oder nur libcrypto
und libssl
Symlinks ändern. Durch Eingabe in den Ordner /usr/lib/x86_64-linux-gnu
geben Sie die Befehle ln -s libssl.so.1.1 libssl
und ln -s libcrypto.so.1.1 libcrypto
ein.
Geben Sie anschließend folgenden Befehle:
cd ~/.local/share/letsencrypt/bin/
./pip uninstall cryptography pyopenssl -y
./pip install --upgrade pip
rm -rf ~/.cache/
./pip install cryptography pyopenssl
Und your'e getan, sollte alles korrekt funktionieren.
Nur eine Vermutung, aber fallen zurück auf OpenSSL 1.0.2 Linie. In 1.1.0 haben sich viele Symbole geändert und einige Sichtbarkeiten wurden geändert. OpenSSL 1.0.2 und OpenSSL 1.1.0 sind * nicht * binärkompatibel. – jww
Ich weiß nicht, wie ich die neue Version komplett aus der Distribution lösche. Weil ich alles gelöscht habe, was ich mit dem Befehl whereis openssl gefunden habe. Dann lief der Befehl apt-get remove openssl. Dann einfach mit apt-get install openssl installiert. Jetzt ist meine Version OpenSSL 1.0.1f 6 Jan 2014 kann noch nicht erneuert werden. Irgendwelche Ideen? –
@ ŽygimantasBaranauskas Ist es immer noch der gleiche Fehler? – glibdud