Wie installiere ich die OpenSSL-Bibliotheken unter Ubuntu?


234

Ich versuche, Code auf Ubuntu 10.04 LTS zu erstellen, der OpenSSL 1.0.0 verwendet. Wenn ich make ausführe, wird g ++ mit der Option "-lssl" aufgerufen. Die Quelle enthält:

#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/des.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>

Ich rannte:

$ sudo apt-get install openssl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
openssl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

Aber ich denke, das openssl-Paket enthält die Bibliothek nicht. Ich bekomme diese Fehler bei make:

foo.cpp:21:25: error: openssl/bio.h: No such file or directory
foo.cpp:22:28: error: openssl/buffer.h: No such file or directory
foo.cpp:23:25: error: openssl/des.h: No such file or directory
foo.cpp:24:25: error: openssl/evp.h: No such file or directory
foo.cpp:25:25: error: openssl/pem.h: No such file or directory
foo.cpp:26:25: error: openssl/rsa.h: No such file or directory

Wie installiere ich die OpenSSL C ++ - Bibliothek unter Ubuntu 10.04 LTS?

Ich habe ein man g++und (unter "Optionen zum Verknüpfen") für die Option -l ausgeführt, die besagt: "Der Linker durchsucht eine Standardliste von Verzeichnissen für die Bibliothek ..." und "Die durchsuchten Verzeichnisse enthalten mehrere Standardsystemverzeichnisse ...". Was sind diese Standardsystemverzeichnisse?


1
Nicht ganz ein Duplikat, aber beantwortet mit Was sind * -Entwicklungspakete? .
Troubadour

Sie haben Recht mit der -devNamenskonvention. Sie können auch den synapticPaketmanager verwenden, um alle Pakete aufzulisten, deren Namen libssl enthalten. Wenn Sie diese Liste und ihre Beschreibungen durchsuchen, erhalten Sie wahrscheinlich den Hinweis.
Crazyscot

1
Ich weiß, dass diese Frage inzwischen ziemlich tot ist, aber seit ich sie kürzlich gefunden habe, denke ich, dass es auch jemand anderes sein könnte. Wenn Sie alle Pakete auflisten möchten, die einem bestimmten Namen ähnlich sind, verwende ich gerne> aptitude search <STRING>. Zum Ausführen einer Suche ist keine Root-Berechtigungsstufe erforderlich.
Evan Larkin

2
Nur um Evans Aussage zu ergänzen, kommen neuere Versionen von Ubuntu ohne den verfügbaren Befehl aptitude. Die apt-Cache-Suche <Paketname> funktioniert jetzt (fast) genauso.
Andy

3
Als Antwort auf Ihr Update könnten Sie tunapt-cache search package-name
TheDoctor

Antworten:


490

Sie möchten das Entwicklungspaket libssl-dev installieren:

sudo apt-get install libssl-dev

1
Dies ist jedoch nicht die von ihm gewünschte Version (1.0.0), die nicht für 10.04 gepackt ist. Siehe diese Antwort für 1.0.0: stackoverflow.com/questions/3153114/…
nealmcb

Ah, guter Anruf. Ich habe damals nur bemerkt, dass er versucht hat, die Entwicklungsbibliotheken zu verwenden, aber das -dev-Paket nicht installiert hat. Ich habe nicht einmal die Versionsnummer bemerkt.
Niki Yoshiuchi

Dies ist hier die richtige Referenz: technologyskill.ga/install-openssl-manually-on-linux oder howtoforge.com/tutorial/… Bibliotheken und Header-Dateien befinden sich nach der Installation im selben Verzeichnis: / usr / local / ssl
MickaelT

2
apt installfür neue dist ubuntu
AtachiShadow

1
@ GeorgeSp Ich denke schon, aber es ist noch "natürlicher", sie in einem benutzerdefinierten Verzeichnis mit dieser Anweisung zu erstellen. Stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз


15

Wie hätte ich das für mich selbst herausfinden können (außer diese Frage hier zu stellen)? Kann ich apt-get irgendwie anweisen, alle Pakete aufzulisten und nach ssl zu greifen? Oder muss ich die Namenskonvention "lib * -dev" kennen?

Wenn Sie mit verknüpfen, -lfooist die Bibliothek wahrscheinlich libfoo.so. Die Bibliothek selbst ist wahrscheinlich Teil des libfooPakets, und die Header befinden sich im libfoo-devPaket, wie Sie festgestellt haben.

Einige Leute verwenden die GUI "synaptic" app ( sudo synaptic), um Pakete zu finden und zu installieren, aber ich bevorzuge die Befehlszeile. Eine Sache, die es einfacher macht, das richtige Paket über die Befehlszeile zu finden, ist die Tatsache, dass apt-getdie Bash-Vervollständigung unterstützt wird.

Versuchen Sie zu tippen sudo apt-get install libsslund drücken Sie dann tab, um eine Liste der übereinstimmenden Paketnamen anzuzeigen (dies kann hilfreich sein, wenn Sie die richtige Version eines Pakets auswählen müssen, für das mehrere Versionen oder andere Variationen verfügbar sind).

Die Bash-Vervollständigung ist tatsächlich sehr nützlich. Sie können beispielsweise auch eine Liste der apt-getunterstützten Befehle abrufen, indem Sie tippen sudo apt-getund dann drücken tab.


Ubuntu könnte den Schmerz für die Leute lindern, da es seit Jahren ein Problem ist. Sie könnten einen Alias ​​haben openssl-dev, libssl-devaber sie entscheiden sich dagegen.
JWW

7

Ich habe hier eine detaillierte Lösung gefunden: OpenSSL manuell unter Linux installieren

Aus dem Blogbeitrag ...:

Die Schritte zum Herunterladen, Kompilieren und Installieren sind wie folgt (ich installiere unten Version 1.0.1g; bitte ersetzen Sie "1.0.1g" durch Ihre Versionsnummer):

Schritt - 1: Herunterladen von OpenSSL:

Führen Sie den folgenden Befehl aus:

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz

Laden Sie auch den MD5-Hash herunter, um die Integrität der heruntergeladenen Datei nur zu Variationszwecken zu überprüfen. In demselben Ordner, in den Sie die OpenSSL-Datei von der Website heruntergeladen haben:

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.md5
$ md5sum openssl-1.0.1g.tar.gz
$ cat openssl-1.0.1g.tar.gz.md5

Schritt - 2: Extrahieren Sie Dateien aus dem heruntergeladenen Paket:

$ tar -xvzf openssl-1.0.1g.tar.gz

Geben Sie nun das Verzeichnis ein, in das das Paket extrahiert wird, wie hier: openssl-1.0.1g

$ cd openssl-1.0.1g

Schritt - 3: Konfiguration OpenSSL

Führen Sie den folgenden Befehl mit optionaler Bedingung aus, um das Präfix und das Verzeichnis festzulegen, in das Sie Dateien und Ordner kopieren möchten.

$ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl

Sie können "/ usr / local / openssl" durch den Verzeichnispfad ersetzen, in den Sie die Dateien und Ordner kopieren möchten. Stellen Sie jedoch sicher, dass das Terminal während dieser Schritte auf Fehlermeldungen überprüft wird.

Schritt - 4: OpenSSL kompilieren

Um openssl zu kompilieren, müssen Sie den folgenden Befehl 2 ausführen: make, make install wie folgt:

$ make

Hinweis: Überprüfen Sie zu Überprüfungszwecken, ob Fehlermeldungen vorliegen.

Schritt -5: OpenSSL installieren:

$ sudo make install

Oder ohne Sudo,

$ make install

Das ist es. OpenSSL wurde erfolgreich installiert. Sie können den Versionsbefehl wie folgt ausführen, um festzustellen, ob er funktioniert hat oder nicht:

$ /usr/local/openssl/bin/openssl version

OpenSSL 1.0.1g 7 Apr 2014


1
Der Vollständigkeit halber sollten Sie die PGP-Signaturüberprüfung einschließen, um sicherzustellen, dass die Dateisignatur gültig ist. Wie in gnupg.org/download/integrity_check.html und openoffice.org/download/checksums.html#pgp_linux
djondal

5

Eine andere Möglichkeit, die openssl-Bibliothek aus dem Quellcode unter Ubuntu zu installieren, sind die folgenden Schritte. Hier WORKDIRist Ihr Arbeitsverzeichnis:

sudo apt-get install pkg-config
cd WORKDIR
git clone https://github.com/openssl/openssl.git
cd openssl
./config
make
sudo make install
# Open file /etc/ld.so.conf, add a new line: "/usr/local/lib" at EOF
sudo ldconfig

4

Sie wollen das openssl-develPaket. Zumindest denke ich, dass es -develauf Ubuntu ist. Könnte sein -dev. Es ist einer der beiden.


1
Beides sudo apt-get install openssl-devund sudo apt-get install openssl-develRückgabe "E: Paket konnte nicht gefunden werden ..."
Daryl Spitzer

6
Anscheinend ist es libssl-dev, wie die anderen gesagt haben. Ich benutze kein Ubuntu, daher bin ich mit den Paketnamen nicht vertraut.
Jonescb

7
Openssl-devel war das, was ich für CentOS 6 brauchte. sudo yum install openssl-devel*
Banjer

5
Seien wir ehrlich: diese Benennung ist
scheiße

gut, saugt diese Namensgebung :) - aber noch ist es der beste Namensgebung Standard , den wir haben können ... aber jemand wirklich , sollte endlich anfangen Lehre zu diesem Thema in der Schule „Grundlagen der IT“ in allen Schulen der Welt.
Filip OvertoneSinger Rydlo

0

Wenn Sie unter Debian oder Ubuntu eine Entwicklungsdatei (oder eine andere Datei) vermissen, können Sie apt-filein der Regel herausfinden, welches Paket diese Datei bereitstellt:

~ apt-file search openssl/bio.h
android-libboringssl-dev: /usr/include/android/openssl/bio.h
libssl-dev: /usr/include/openssl/bio.h
libwolfssl-dev: /usr/include/cyassl/openssl/bio.h
libwolfssl-dev: /usr/include/wolfssl/openssl/bio.h

Ein kurzer Blick auf jedes der Pakete, die vom Befehl zurückgegeben apt showwerden, zeigt Ihnen, welches der Pakete das ist, nach dem Sie suchen:

~ apt show libssl-dev
Package: libssl-dev
Version: 1.1.1d-2
Priority: optional
Section: libdevel
Source: openssl
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
Installed-Size: 8,095 kB
Depends: libssl1.1 (= 1.1.1d-2)
Suggests: libssl-doc
Conflicts: libssl1.0-dev
Homepage: https://www.openssl.org/
Tag: devel::lang:c, devel::library, implemented-in::TODO, implemented-in::c,
 protocol::ssl, role::devel-lib, security::cryptography
Download-Size: 1,797 kB
APT-Sources: http://ftp.fr.debian.org/debian unstable/main amd64 Packages
Description: Secure Sockets Layer toolkit - development files
 This package is part of the OpenSSL project's implementation of the SSL
 and TLS cryptographic protocols for secure communication over the
 Internet.
 .
 It contains development libraries, header files, and manpages for libssl
 and libcrypto.

N: There is 1 additional record. Please use the '-a' switch to see it

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.