Wie OpenSSL Update (1.0.2)

Squicky

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.404
Hallo

Ich nutzt ein frisches Linux Mint 17 (mit allen automatischen Updates).

Nun soll/muss die Virtual Smartcard installiert werden: http://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html
Es soll auch "OpenPACE [10] (nPA emulation)" installiert werden.

"openpace-master" ist runtergeladen und entpackt.
Im entpacktem Ordner wird ".\configure" ausgefürht.
Dabei kommt es zu einem Fehler:
Code:
...
checking for CRYPTO... no
configure: error: Package requirements (libcrypto >= 1.0.2) were not met:

Requested 'libcrypto >= 1.0.2' but version of OpenSSL-libcrypto is 1.0.1f

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables CRYPTO_CFLAGS
and CRYPTO_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.


Wie kann man OpenSSL 1.0.2 installieren?
Folgendes funktioniert nicht:
Code:
 wget http://www.openssl.org/source/openssl-1.0.2-beta1.tar.gz
 tar -zxf openssl-1.0.2-beta1.tar.gz
 cd openssl-1.0.2-beta1
 ./config
 make
 make test
 make install_sw

Danke
 
"Folgendes funktioniert nicht:" ist jetzt nicht unbedingt die beste Hilfestellung, um dir deine Frage zu beantworten... Was passiert denn?
 
Richtig, die genaue Fehlermeldung wäre hilfreich. Außerdem ist 1.0.2-beta1 noch von Heartbleed betroffen, ich empfehle dringend 1.0.1g oder 1.0.2-beta2 (ungewiss ob schon erschienen) zu verwenden.
 
Zuletzt bearbeitet von einem Moderator:
ja - aber er braucht die 1.0.2 beta und nicht die aktuelle 1.0.1 stable - daher wirds über die Paketverwaltung eher nicht gehen (außer es gibt quellen für die beta)
 
Wenn du OpenPace-Master auch über die Quellen deiner Distribution bekommst, versuchs damit - ist in jedem Fall besser, als sich mit Selbstbau auch bei jedem zukünftigen Update um die Abhängigkeiten selbst kümmern zu müssen. Genau das wird nämlich bei dir gerade zum Problem - du brauchst eine neuere libcrypto, als nach Paketinstallation vorhanden ist und wenn in den offiziellen Mint-Quellen libcrypto1.0.1f aktuell sein sollte, müsstest du libcrypto an den Paketquellen vorbei installieren und setzt so den Anfang einer Systemzerkloppung. ;)

P.S.
... weil andere Pakete aus den offiziellen Quellen vielleicht 1.0.1f brauchen

P.P.S.
Vielleicht gibts auch ein Drittanbieter Repo für mint, das OpenPaceMaster enthält und zusätzlich alle Pakete so ändert, dass sowohl Mint als auch OpenPace-Master funktionieren.
 
Zuletzt bearbeitet:
Debian basierende Distris sind für solche Fälle nicht besonders geeignet.
Gibt es keine fertigen Pakete, wobei ich diese Verson der Bibliothek niemals als System Bibliothek installieren würde.
Die enthält nämlich noch den heartbeat/bleat Bug!

Wo und an welcher Stelle scheitert den openssl bei dir, ohne passende Fehlermeldung kann dir kein Mensch weiterhelfen!
 
frank99 schrieb:
...
Die enthält nämlich noch den heartbeat/bleat Bug! ...
Die Abhängigkeit von OpenPace Master sagt ja auch ">= 1.0.2"

Und vielleicht ist die von Mint installierte eine durch Backports aktuell gepatchte Version, die nur die alte Nummer trägt, weil irgendwas im Distropaketbaum eine Abhängigkeit vo genau1.0.1 und nicht >=1.0.1 hat.
 
1.0.1g ist die offizielle stable - ich vermute die 1.0.1f im aktuellen Mint ist trotzdem gepatcht
1.0.2 ist noch beta und wird daher noch in keinen offiziellen stable repos liegen
 
@Squicky
Folge der ersten Antwort, also liefere die Fehlermeldung. Ich vermute, daß nötige Compiler, Bibliotheken und Include-Files zum übersetzen von Openssl fehlen, aber da kann man nur orakeln. Ein "apt-get install build-essential" könnte nicht schaden, um erstmal ein paar ganz grundlegende Sachen (C-Compiler, libc-Header) zu installieren. Was darüber hinaus noch nötig ist, siehst du ggf. an den Fehlermeldungen beim Versuch openssl zu bauen.

Achja: Ich würde beim ./config die Pfade ändern. "./config --prefix=/usr/local --openssldir=/usr/local/lib/openssl" oder sowas. Oder in einen ganz anderen, privaten Pfad mit "./config ... no-shared" installieren, die fertige libcrypto statisch in dein Programm linken und dann openssl wieder löschen. Das geht am schnellsten.

klenamenis schrieb:
Außerdem ist 1.0.2-beta1 noch von Heartbleed betroffen
Sein Progrämmchen benötigt nur libcrypto aus openssl, die mit dem Bug nichts zu tun hat.

frank99 schrieb:
Debian basierende Distris sind für solche Fälle nicht besonders geeignet.
Schmarrn.
 
Zuletzt bearbeitet:
Es gibt noch kein neueres 1.0.2 Release als die Beta1:

Code:
https://www.openssl.org/

23-Apr-2014:	   Team status changes including new team member: Steve Marquess
07-Apr-2014:	   Security Advisory: Heartbeat overflow issue.
07-Apr-2014:	   OpenSSL 1.0.1g is now available, including bug and security fixes
24-Feb-2014:	   Beta 1 of OpenSSL 1.0.2 is now available, please test it now

und die ist definitiv vom heartblead bug betroffen...
Ergänzung ()


Ich bleibe dabei, Debian basierende Distris sind in solchen Fällen mist!

Oder erkläre mir mal wie er auf die schnelle updaten kann, wenn es kein fertiges Paket gibt?

Eine anständige Distri hat sogar eine solche Beta Version im Angebot:

dev-libs/openssl
Available versions:
(0.9.8) 0.9.8y (~)0.9.8y-r1
(0) [M]1.0.0j 1.0.1g (~)1.0.1g-r1 **1.0.2_beta1-r2 **1.0.2_beta1-r3

Unter Gentoo problemlos in wenigen Sekunden installiert!
 
@frank99
Openssl gliedert sich in mehrere Teile. Ein Teil davon landet als libcryto auf der Platte und enthält die kryptografischen Algorithmen. Nur dieses Ding benötigt der Threadersteller für sein Programm.

Der SSL-Kram von openssl, der ggf. den Bug enthält, steckt in libssl. Dieser Teil von Openssl ist für squicky komplett wurscht.
 
@mensch183

Dann schau dir an was der da oben vor hat!
Er hat den Source von OpenSSL heruntergeladen und will den compilieren und installieren!
Wobei er bei Punkt 4 sich hier wohl verschrieben oder falsch gemacht hat ./config -> ./configure

Wenn er wirklich ./configure hat laufen lassen ohne Parameter dann ist heartbeat aktiv und wahrscheinlich einiges andere mehr, was wie du zurecht schreibst er nicht benötigt...

Ich habe heartbeat bei mir abgeschaltet mit der configure option: no-heartbeats
Hier meine komplette Ausgabe für openSSL
./Configure linux-x86_64 enable-camellia enable-ec enable-idea enable-mdc2 enable-rc5 enable-tlsext no-gmp no-krb5 no-rfc3779 no-heartbeats enable-zlib --prefix=/usr --openssldir=/etc/ssl --libdir=lib64 shared threads
 
Clone dir das git repository und nutze den OpenSSL_1_0_2-stable head [1], oder hol die einen aktuellen 1.0.2 snapshot als Tarball von [2].
Das Konzept der Beta macht hier keinen großen Sinn, wenn sie nicht öfters eine neue veröffentlichen.

Cloudflare nutzt openssl 1.0.2 schon seit längerem btw.


Kompiliere openssl ohne shared libs, dann wird deine Applikation statisch gelinkt, was in diesem Fall einfacher ist:

Code:
rm -rf /home/user/libsslbuild/
mkdir /home/user/libsslbuild/
cd openssl
make clean
./config --prefix=/home/user/libsslbuild/ no-shared
make
make install_sw


Benutze einen dedizierten Path (wie oben --prefix), installiere es nicht ins laufende System sonst verkakst du es dir mit ziemlicher Wahrscheinlichkeit (scheint du hast dass schon probiert).


Gibt beim Kompilieren der Andwendungen die entsprechenden Pfade an, damit nicht die system lib gelinkt wird, sondern "deine" (lib=/home/user/libsslbuild/lib inc=/home/user/libsslbuild/include, möglicherweise musst du auch nocht libdl mitlinken mit "-ldl").




[1] https://www.openssl.org/source/repos.html
[2] ftp://ftp.openssl.org/snapshot/
 
frank99 schrieb:
@mensch183
Dann schau dir an was der da oben vor hat!
Er hat den Source von OpenSSL heruntergeladen und will den compilieren und installieren!
Gut so. Das ist ein gangbarer Weg, wenn er die libcrypto von openssl-1.0.2 benötigt. Dank der in openssl anders voreingestellten Pfade zerschießt er sich damit nicht die Installation der Distribution.

frank99 schrieb:
Wobei er bei Punkt 4 sich hier wohl verschrieben oder falsch gemacht hat ./config -> ./configure
Weder noch. Er hat vermutlich einen Blick in die Doku geworfen. Openssl kommt seit mindestens 10 Jahren mit einem Skript namens ./config daher, welches die Plattform selbst ermittelt und das seit ssleay-Zeiten bekannte ./Configure aufruft.

Offtopic:
zu deiner Geschichte vom "schnellen updaten" von 1.0.1 auf 1.0.2: Die Versionierung von openssl läßt diesen Updatepfad nicht zu. Man muß von 1.0.1 abhänge Programme für 1.0.2 neu bauen. Beide Versionen nebeneinander istallieren geht auch, ist aber kein Update der Bibliothek.
 
Danke für die vielen vielversprechenden Antworten.

Das wichtigste zuerst: Ich bin Linux Newbie. Die paar Programm, die ich bei Linux installiert habe, habe ich immer genau nach Anleitung (Internet, Readme, …) gemacht. (Verstanden habe ich diese Anleitungen nicht immer ganz, aber es kam zu keinen Fehlermeldungen.


Wiederholung und Verständnis:
Mit dem ./configure Befehl im openpace-master Ordner braucht die Bibliothek libcrypto. Und er benutzt die libcrypto aus der Standard openssl Installation. Leider ist dies die falsche Version.
Also wollte ich mit den Befehlen (Code, 7 Zeilen) die neue Version (1.0.2-beta1) installieren.
Frage/Unklarheit: Ich dachte, dass der Befehle make install_sw am Ende auch diese Version installiert.
Aber als ich dann erneut den ./configure Befehl im openpace-master Ordner ausgeführt habe, wurde mir immer noch angezeigt, dass die Version 1.0.1f installiert ist. Warum? Mit dem Befehl make install_sw sollte doch die Version 1.0.2-beta1 installiert worden sein ?!?

Die Tipps mit „Pfade ändern“ bei config(ure) verstehe ich nicht ganz. Was bring das?

Euer Tipp ist es also, die openssl Version 1.0.1 als Standard zu lassen und die Version 1.0.2 in einen neuen extra Ordner zu Erstellen oder Kompilieren oder Installieren?!?
Ist dies der Code (7 Zeilen) von luky37 ?
Wie kann ich dann ./configure Befehl im openpace-master Ordner mitteilen, dass er die libcrypto Bibliothek aus dem Extra Ordner nutzen soll?

P.S. Ich bin Linux Newbie.
 
Squicky schrieb:
Also wollte ich mit den Befehlen (Code, 7 Zeilen) die neue Version (1.0.2-beta1) installieren.
...
Frage/Unklarheit: Ich dachte, dass der Befehle make install_sw am Ende auch diese Version installiert.
Jaja. Hat denn bis dahin alles funktioniert? Falls ja, liegt dein neu gebautes openssl unterhalb des Verzeichnisses /usr/local/ssl. Kontrolliere erstmal, ob da wirklich was liegt. Insbesondere muß da eine Datei namens /usr/local/ssl/lib/libcrypto.... rumliegen. Das ist die Bibliothek, die dein Programm benötigt.

Du hast nun 2 verschiedene Versionen von openssl auf deinem System.

Squicky schrieb:
Aber als ich dann erneut den ./configure Befehl im openpace-master Ordner ausgeführt habe, wurde mir immer noch angezeigt, dass die Version 1.0.1f installiert ist. Warum?
Weil das configure-Skript weiterhin die von der Linuxdistri vorinstallierte Version findet, nicht deine neu gebaute in dem "ulkigen" Pfad /usr/local/ssl.

In der Fehlermeldung kannst du lesen, wie du das ändern kannst. Entweder PKG_CONFIG_PATH oder CRYPTO_CFLAGS und CRYPTO_LIBS anpassen. Wählen wir mal Variante 1. Vor dem ./configure also die Variable setzen. In deinem Fall so:

$ PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure ...

Wenns nicht geht, mach es mal so:
$ CRYPTO_CFLAGS=-I/usr/local/ssl/include CRYPTO_LIBS="-L/usr/local/ssl/lib -lcrypto" ./configure ...
 
Zuletzt bearbeitet:
Mit
PKG_CONFIG_PATH=/usr/local/ssl/lib/pkgconfig ./configure
hat "besser" funktioniert: Es kommt zu einem anderem Fehler:

...
checking for OPENSSL_cleanse... yes
checking for EVP_sha256... configure: error: Need OpenSSL with SHA-256 support

Wie kann man openssl nun SHA-256 beibringen?

(Warum ist der Pfad /usr/local/ssl "ulkig"?)
 
Ah, hab mir mal auf deren Sorceforge-Seite die Installationsanleitung durchgelesen:
"For patching OpenSSL we provide ``oids.patch``.
+You can configure OpenPACE with *--enable-openssl-install*, which will
+automatically download, patch, build and install OpenSSL if needed."


Dh. eigentlich wäre es einfacher, nicht openSSL 1.0.2 per hand zu installieren, sondern beim ./configure von OpenPACE Master das zu schreiben:
./configure --enable-openssl-install

Damit sollte sich die openSSL-Installation von selbst erledigen, wenn ich den Text auf der Sourceforge-Seite von OpenPACE richtig verstanden habe. ;)
 
Zurück
Oben