Ich habe ein Dropbox-Upload-Skript für eine alte NAS-Box, die ich habe. In letzter Zeit habe ich die folgende Fehlermeldung erhalten
Fehler beim SSL-Zertifikat: [Errno 1] _ssl.c: 504: Fehler: 0D0890A1: ASN1-Codierungsroutinen: ASN1_verify: Algorithmus für unbekannten Nachrichtenauszug
Ich denke, das liegt daran, dass openssl auf der Box nicht mehr aktuell ist
Also lade ich openssl herunter, baute es aus dem Quellcode und installierte es, jetzt, wenn ich Folgendes ausführte, scheint es, dass es korrekt aktualisiert wurde.
openssl version
OpenSSL 1.0.1h 5 Jun 2014
Aber es scheint, dass Python immer noch auf eine alte Version verweist. Wie würde ich diese aktualisieren?
python -c "import ssl; print ssl.OPENSSL_VERSION"
OpenSSL 0.9.7m 23 Feb 2007
Hat das nach einigen Tagen zum Laufen gebracht. MAC OS X El Captian oder höher
Sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7
Sudo rm -rf "/Applications/Python 2.7"
cd /usr/local/bin/
ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | tr -d @ | xargs rm
brew uninstall python
brew uninstall openssl
brew link --force openssl
Installieren Sie nun python und openssl erneut mit brew.
brew install openssl
brew install python --with-brewed-openssl
Fügen Sie dem PATH in ~/.bash_profile auf Ihrem MAC Folgendes hinzu
vi ~/.bash_profile
export PATH=/usr/local/opt/openssl/bin:/usr/local/opt/python/libexec/bin:$PATH
starten Sie das Terminal neu
python --version (verify if it is picking up the right version)
openssl version -a (verify if it is picking up the right version)
python -c "import ssl; print ssl.OPENSSL_VERSION"
(Hinweis: Wenn Sie Python3 installiert haben, müssen Sie die Syntax print
im Inline-Compiler-Schritt aktualisieren.)
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
sollte Ihnen die neueste Version der Open-SSL-Version geben
2018 unter MacOS
Ich habe mit den anderen Antworten ohne Erfolg versucht:
--with-brewed-openssl
Option gibt Warning: python: this formula has no --with-brewed-openssl option so it will be ignored!
brew link openssl --force
gibt Warning: Refusing to link: openssl
Ich habe es geschafft mit zu arbeiten
brew install openssl
brew install [email protected]
Dann
openssl version
und
python -c "import ssl; print ssl.OPENSSL_VERSION"
gab mir die gleiche OpenSSL-Version.
Bitte beachten Sie http://rkulla.blogspot.kr/2014/03/the-path-to-homebrew.html .
Ich habe das gleiche Problem wie Sie und deshalb habe ich mehrere Antworten gesucht, aber es hat mir nicht geholfen.
Nach dem Upgrade von openssl auf 1.0.1j durch Homebrew auf MAC, aber der System-Python bezog sich immer noch auf die alte Version 0.9.8. Es stellte sich heraus, dass der Python sich auf openssl bezieht. Also habe ich neuen Python mit gebrautem OpenSL installiert und diese Ausgabe auf Mac, Ubuntu noch nicht abgeschlossen.
Unter Mac OS X Version 10.10 und System Python Version 2.7.6 verfahren Sie wie folgt.
$ brew update
$ brew install openssl.
Dann können Sie die openssl-Version 1.0.1j sehen. $ brew link openssl --force
$ brew install python --with-brewed-openssl.
Sie müssen neuen Python mit gebrautem openssl installieren. Dann können Sie /usr/local/Cellar/python/2.7.8_2/bin/python sehen. $ Sudo ln -s /usr/local/Cellar/python/2.7.8_2/bin/python /usr/local/bin/python.
Natürlich sollte/usr/local/* $ USER gehören, nicht root, was von Ryan gesagt wird, aber ich habe 'Sudo' verwendet. Und vor dieser Anweisung hatte ich/usr/local/bin/python nicht. Nach dieser Anweisung können Sie Python-Version 2.7.8 nicht 2.7.6 verwenden.Schließlich können Sie wie unten sehen;
$ python --version
Python 2.7.8
$ python -c "import ssl; print ssl.OPENSSL_VERSION"
OpenSSL 1.0.1j 15. Oktober 2014
Bis jetzt arbeite ich daran an Ubuntu 12.04. Wenn ich eine Lösung für Ubuntu 12.04 habe, werde ich meine Antwort aktualisieren. Ich hoffe, dieses Verfahren hilft Ihnen.
Ich fand, dass ich den PFAD ändern musste, um das System zu verwenden (aktualisiertes SSL):
$ pip install --editable .
Obtaining file:///Users/jhlynch/Projects/flaskr
Collecting flask (from flaskr==0.0.0)
Could not fetch URL https://pypi.python.org/simple/flask/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661) - skipping
Could not find a version that satisfies the requirement flask (from flaskr==0.0.0) (from versions: )
No matching distribution found for flask (from flaskr==0.0.0)
$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 0.9.8zh 14 Jan 2016 <<< note older version
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/jhlynch/.nix-profile/bin:/Users/jhlynch/.nix-profile/sbin:/Users/jhlynch/.nix-profile/lib/kde4/libexec:/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/nix/var/nix/profiles/default/lib/kde4/libexec:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ PATH="/usr/local/bin:/usr/local/sbin:${PATH}"
$ export PATH
$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.0.2o 27 Mar 2018 <<< note newer version
$ pip install --editable .
Obtaining file:///Users/jhlynch/Projects/flaskr
Collecting flask (from flaskr==0.0.0)
Downloading https://files.pythonhosted.org/packages/77/32/e3597cb19ffffe724ad4bf0beca4153419918e7fa4ba6a34b04ee4da3371/Flask-0.12.2-py2.py3-none-any.whl (83kB)
... <<< works this time!
Das hat für mich funktioniert.
python -c "import ssl; print ssl.OPENSSL_VERSION"
brew link openssl --force
brew install python --with-brewed-openssl
mv /usr/local/bin/python /usr/local/bin/python_old
Sudo ln -s /usr/local/Cellar/python/2.7.11/bin/python /usr/local/bin/python
Ich habe alle oben genannten Schritte ausgeführt und bekam immer noch das gleiche Problem. Ich habe mein Problem gelöst, indem ich den folgenden Befehl nach den in den vorherigen Antworten aufgeführten hinzugefügt habe:
brew unlink openssl --force --overwrite python && brew link openssl --force --overwrite python
Hoffe es hilft jemandem :)
OSX Sierra, Python 3.7, dasselbe Problem, das erneute Installieren/Aktualisieren von Python und OpenSSL hat bei diesem Problem nicht geholfen (war aber trotzdem nützlich, denke ich).
Grundlösung: Bereinigen Sie Ihren $ PATH in .bash_profile
! Ich musste manuell entfernen Bündel veralteter Verzeichnisse (/Library/Frameworks/Python.framework/Versions/3.4/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin
)
Dann renne:
brew link --overwrite --dry-run python
Wenn alles in Ordnung ist, wiederholen Sie dies ohne --dry-run
:
brew link --overwrite python
Ergebnis:
Linking /usr/local/Cellar/python/3.7.0... 25 symlinks created
~
$ python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.0.2p 14 Aug 2018