Comment installer les bibliothèques OpenSSL sur Ubuntu?


235

J'essaie de construire du code sur Ubuntu 10.04 LTS qui utilise OpenSSL 1.0.0. Lorsque j'exécute make, il invoque g ++ avec l'option "-lssl". La source comprend:

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

L'Iran:

$ 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.

Mais je suppose que le paquet openssl n'inclut pas la bibliothèque. Je reçois ces erreurs sur la marque:

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

Comment installer la bibliothèque OpenSSL C ++ sur Ubuntu 10.04 LTS?

J'ai fait un man g++et (sous "Options de liaison") pour l'option -l, il indique: "L'éditeur de liens recherche une liste standard de répertoires pour la bibliothèque ..." et "Les répertoires recherchés incluent plusieurs répertoires système standard ..." Quels sont ces répertoires système standard?


1
Pas tout à fait un doublon, mais répondu par Que sont les packages * -devel? .
Troubadour

Vous avez raison sur la -devconvention de dénomination. Vous pouvez également utiliser le synapticgestionnaire de packages pour répertorier tous les packages dont les noms contiennent libssl - parcourir cette liste et leurs descriptions vous donnerait probablement un indice.
crazyscot

1
Je sais que cette question est maintenant complètement morte, mais depuis que je l'ai récemment trouvée, je pense que quelqu'un d'autre pourrait aussi. Si vous souhaitez répertorier tous les packages qui sont similaires à un certain nom, j'aime utiliser> aptitude search <STRING>. Il ne nécessite pas de niveau de privilège root pour exécuter une recherche.
Evan Larkin

2
juste pour ajouter à la déclaration d'Evan, les versions récentes d'Ubuntu arrivent sans la commande aptitude disponible. La recherche apt-cache <packname> fonctionne de la même manière (presque) maintenant.
Andy

3
En réponse à votre mise à jour, vous pourriez le faireapt-cache search package-name
TheDoctor

Réponses:


492

Vous souhaitez installer le package de développement, qui est libssl-dev:

sudo apt-get install libssl-dev

1
Mais ce n'est pas la version qu'il voulait (1.0.0), qui n'est pas packagée pour 10.04. Voir cette réponse pour 1.0.0: stackoverflow.com/questions/3153114/…
nealmcb

Ah, bon appel. J'ai seulement remarqué à l'époque qu'il essayait d'utiliser les bibliothèques de développement mais n'installait pas le paquet -dev. Je n'ai même pas remarqué le numéro de version.
Niki Yoshiuchi

C'est la bonne référence ici: technologyskill.ga/install-openssl-manually-on-linux ou howtoforge.com/tutorial/… les bibliothèques et les fichiers d'en-tête se trouvent dans le même répertoire après l'installation: / usr / local / ssl
MickaelT

2
apt installpour nouvelle dist ubuntu
AtachiShadow

1
@GeorgeSp Je pense que oui, mais il est encore plus "naturel" de les construire dans un répertoire personnalisé en utilisant cette instruction stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз


15

Comment aurais-je pu comprendre cela par moi-même (à part poser cette question ici)? Puis-je dire en quelque sorte à apt-get de lister tous les paquets, et grep pour ssl? Ou dois-je connaître la convention de dénomination "lib * -dev"?

Si vous vous connectez avec, -lfoola bibliothèque est probable libfoo.so. La bibliothèque elle-même fait probablement partie du libfoopackage, et les en-têtes sont dans le libfoo-devpackage comme vous l'avez découvert.

Certaines personnes utilisent l'application (synaptic) GUI ( sudo synaptic) pour (localiser et) installer des packages, mais je préfère utiliser la ligne de commande. Une chose qui facilite la recherche du bon package à partir de la ligne de commande est le fait qu'il apt-getprend en charge la complétion bash.

Essayez de taper sudo apt-get install libssl, puis appuyez sur tabpour voir une liste de noms de packages correspondants (ce qui peut vous aider lorsque vous devez sélectionner la version correcte d'un package qui a plusieurs versions ou d'autres variantes disponibles).

La complétion de Bash est en fait très utile ... par exemple, vous pouvez également obtenir une liste de commandes qui apt-getprend en charge en tapant sudo apt-getpuis en appuyant tab.


Ubuntu pourrait soulager la douleur des gens, car cela a été un problème pendant des années. Ils pourraient alias openssl-devpour , libssl-devmais ils choisissent de ne pas.
2017

7

J'ai trouvé une solution détaillée ici: Installer OpenSSL manuellement sur Linux

De l'article de blog ...:

Les étapes pour télécharger, compiler et installer sont les suivantes (j'installe la version 1.0.1g ci-dessous; veuillez remplacer "1.0.1g" par votre numéro de version):

Étape - 1: Téléchargement d'OpenSSL:

Exécutez la commande comme ci-dessous:

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

Téléchargez également le hachage MD5 pour vérifier l'intégrité du fichier téléchargé à des fins de varifacation uniquement. Dans le même dossier où vous avez téléchargé le fichier OpenSSL depuis le site Web:

$ 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

Étape - 2: Extraire les fichiers du package téléchargé:

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

Maintenant, entrez dans le répertoire où le paquet est extrait comme ici est openssl-1.0.1g

$ cd openssl-1.0.1g

Étape - 3: Configuration d'OpenSSL

Exécutez la commande ci-dessous avec une condition facultative pour définir le préfixe et le répertoire dans lesquels vous souhaitez copier les fichiers et le dossier.

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

Vous pouvez remplacer «/ usr / local / openssl» par le chemin du répertoire où vous souhaitez copier les fichiers et les dossiers. Mais assurez-vous que pendant ces étapes, vérifiez tout message d'erreur sur le terminal.

Étape - 4: Compilation d'OpenSSL

Pour compiler openssl, vous devrez exécuter la commande 2: make, make install comme ci-dessous:

$ make

Remarque: recherchez tout message d'erreur à des fins de vérification.

Étape -5: Installation d'OpenSSL:

$ sudo make install

Ou sans sudo,

$ make install

C'est tout. OpenSSL a été installé avec succès. Vous pouvez exécuter la commande de version pour voir si cela a fonctionné ou non comme ci-dessous:

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

OpenSSL 1.0.1g 7 Apr 2014


1
Pour être complet, vous devez inclure la vérification de la signature PGP pour vous assurer que la signature des fichiers est valide. Comme dans gnupg.org/download/integrity_check.html et openoffice.org/download/checksums.html#pgp_linux
djondal

5

Une autre façon d'installer la bibliothèque openssl à partir du code source sur Ubuntu, suit les étapes ci-dessous, voici WORKDIRvotre répertoire de travail:

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

Vous voulez le openssl-develpaquet. Au moins, je pense que c'est -develsur Ubuntu. C'est possible -dev. C'est l'un des deux.


1
Les deux sudo apt-get install openssl-devet sudo apt-get install openssl-develretourner "E: Impossible de trouver le paquet ..."
Daryl Spitzer

6
Apparemment, c'est libssl-dev comme les autres l'ont dit. Je n'utilise pas Ubuntu, donc je ne connais pas les noms de paquets.
jonescb

7
Openssl-devel était ce dont j'avais besoin pour CentOS 6. sudo yum install openssl-devel*
Banjer

5
Soyons honnêtes: cette appellation est nul :)
mlvljr

eh bien, cette dénomination est nul :) - mais c'est quand même la meilleure norme de dénomination que nous puissions avoir ... mais quelqu'un DEVRAIT vraiment vraiment commencer à enseigner cela dans les matières scolaires "bases de l'informatique" dans TOUTES les écoles du monde.
Filip OvertoneSinger Rydlo

0

En règle générale, lorsque vous êtes sur Debian ou Ubuntu et qu'il vous manque un fichier de développement (ou tout autre fichier d'ailleurs), utilisez apt-filepour déterminer quel package fournit ce fichier:

~ 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

Un rapide coup d'œil à chacun des packages renvoyés par la commande, en utilisant apt showvous indiquera lequel des packages est celui que vous recherchez:

~ 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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.