Come installo le librerie OpenSSL su Ubuntu?


235

Sto cercando di creare del codice su Ubuntu 10.04 LTS che utilizza OpenSSL 1.0.0. Quando eseguo make, invoca g ++ con l'opzione "-lssl". La fonte include:

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

Ho corso:

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

Ma immagino che il pacchetto openssl non includa la libreria. Ottengo questi errori su 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

Come installo la libreria OpenSSL C ++ su Ubuntu 10.04 LTS?

Ho fatto un man g++(sotto "Opzioni per il collegamento") per l'opzione -l che indica: "Il linker cerca un elenco standard di directory per la libreria ..." e "Le directory cercate includono diverse directory di sistema standard ..." Cosa sono quelle directory di sistema standard?


1
Non proprio un duplicato, ma risposto da Cosa sono i pacchetti * -devel? .
Troubadour,

Hai ragione riguardo alla -devconvenzione di denominazione. Puoi anche usare il synapticgestore pacchetti per elencare tutti i pacchetti i cui nomi contengono libssl: sfogliare quell'elenco e le loro descrizioni probabilmente ti darebbe la chiave.
crazyscot,

1
So che questa domanda è abbastanza morta ormai, ma da quando l'ho trovata di recente immagino che anche qualcun altro potrebbe farlo. Se vuoi elencare tutti i pacchetti che sono simili a un certo nome, mi piace usare> aptitude search <STRING> Non richiede il livello di privilegi di root per eseguire una ricerca.
Evan Larkin il

2
solo per aggiungere alla dichiarazione di Evan, le recenti versioni di Ubuntu stanno arrivando senza il comando aptitude disponibile. apt-cache search <nomepacchetto> funziona allo stesso modo (quasi) ora.
Andy,

3
In risposta al tuo aggiornamento, potresti farloapt-cache search package-name
TheDoctor il

Risposte:


492

Volete installare il pacchetto di sviluppo, che è libssl-dev:

sudo apt-get install libssl-dev

1
Ma questa non è la versione che voleva (1.0.0), che non è impacchettata per 10.04. Vedere questa risposta per il 1.0.0: stackoverflow.com/questions/3153114/...
nealmcb

Ah, buona chiamata. Ho notato solo al momento che stava cercando di usare le librerie di sviluppo ma non stava installando il pacchetto -dev. Non ho nemmeno notato il numero di versione.
Niki Yoshiuchi,

Questo è il riferimento giusto qui: technologyskill.ga/install-openssl-manually-on-linux o howtoforge.com/tutorial/… librerie e file di intestazione si trovano nella stessa directory dopo l'installazione: / usr / local / ssl
MickaelT

2
apt installper nuovo ubuntu dist
AtachiShadow

1
@GeorgeSp Credo di sì, ma è ancora più "naturale" per costruirli in una directory personalizzata utilizzando questa istruzione stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз


15

Come avrei potuto capirlo da solo (oltre a fare questa domanda qui)? Posso in qualche modo dire a apt-get di elencare tutti i pacchetti e grep per ssl? O devo conoscere la convenzione di denominazione "lib * -dev"?

Se stai effettuando il collegamento, -lfooè probabile che la libreria libfoo.so. La libreria stessa fa probabilmente parte del libfoopacchetto e le intestazioni si trovano nel libfoo-devpacchetto come hai scoperto.

Alcune persone usano l'app "synaptic" della GUI ( sudo synaptic) per (individuare e) installare i pacchetti, ma preferisco usare la riga di comando. Una cosa che rende più facile trovare il pacchetto giusto dalla riga di comando è il fatto che apt-getsupporta il completamento bash.

Prova a digitare sudo apt-get install libssle poi premi tabper vedere un elenco di nomi di pacchetti corrispondenti (che può essere d'aiuto quando devi selezionare la versione corretta di un pacchetto che ha più versioni o altre varianti disponibili).

Il completamento di Bash è in realtà molto utile ... ad esempio, puoi anche ottenere un elenco di comandi che apt-get supportano digitando sudo apt-gete quindi premendo tab.


Ubuntu potrebbe alleviare il dolore per la gente poiché è stato un problema per anni. Essi potevano alias openssl-deva libssl-dev, ma non scelgono di.
jww

7

Ho trovato una soluzione dettagliata qui: installa OpenSSL manualmente su Linux

Dal post sul blog ...:

I passaggi per scaricare, compilare e installare sono i seguenti (sto installando la versione 1.0.1g di seguito; sostituisci "1.0.1g" con il tuo numero di versione):

Step - 1: Download di OpenSSL:

Esegui il comando come di seguito:

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

Inoltre, scarica l'hash MD5 per verificare l'integrità del file scaricato a solo scopo di varifacazione. Nella stessa cartella in cui è stato scaricato il file OpenSSL dal sito 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

Passaggio 2: estrarre i file dal pacchetto scaricato:

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

Ora, inserisci la directory in cui viene estratto il pacchetto come qui è openssl-1.0.1g

$ cd openssl-1.0.1g

Passaggio 3: configurazione OpenSSL

Esegui sotto il comando con condizione opzionale per impostare il prefisso e la directory in cui desideri copiare file e cartelle.

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

È possibile sostituire "/ usr / local / openssl" con il percorso della directory in cui si desidera copiare i file e le cartelle. Accertarsi, tuttavia, di eseguire questi passaggi per verificare la presenza di messaggi di errore sul terminale.

Step - 4: Compilazione di OpenSSL

Per compilare openssl dovrai eseguire il comando 2: make, make install come di seguito:

$ make

Nota: verificare la presenza di eventuali messaggi di errore a scopo di verifica.

Passaggio -5: installazione di OpenSSL:

$ sudo make install

O senza sudo,

$ make install

Questo è tutto. OpenSSL è stato installato con successo. Puoi eseguire il comando versione per vedere se ha funzionato o meno come di seguito:

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

OpenSSL 1.0.1g 7 Apr 2014


1
Per completezza, è necessario includere la verifica della firma PGP per assicurarsi che la firma dei file sia valida. Come in gnupg.org/download/integrity_check.html e openoffice.org/download/checksums.html#pgp_linux
djondal

5

Un altro modo per installare la libreria openssl dal codice sorgente su Ubuntu, seguire i passaggi seguenti, ecco WORKDIRla directory di lavoro:

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

Vuoi il openssl-develpacco. Almeno penso che sia -develsu Ubuntu. Potrebbe essere -dev. È uno dei due.


1
Entrambi sudo apt-get install openssl-deve sudo apt-get install openssl-develrestituiscono "E: Impossibile trovare il pacchetto ..."
Daryl Spitzer il

6
Apparentemente è libssl-dev come hanno detto gli altri. Non uso Ubuntu, quindi non ho familiarità con i nomi dei pacchetti.
jonescb,

7
Openssl-devel era quello di cui avevo bisogno per CentOS 6. sudo yum install openssl-devel*
Banjer,

5
Siamo onesti: questa denominazione fa schifo :)
mlvljr

beh, questa denominazione fa schifo :) - ma è comunque il miglior standard di denominazione che possiamo avere ... ma qualcuno DOVREBBE finalmente iniziare a insegnare questo argomento nelle materie "basi dell'IT" in TUTTE le scuole del mondo.
Filip OvertoneSinger Rydlo,

0

Come regola generale, quando su Debian o Ubuntu e ti manca un file di sviluppo (o qualsiasi altro file per quella materia), usa apt-fileper capire quale pacchetto fornisce quel file:

~ 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

Una rapida occhiata a ciascuno dei pacchetti restituiti dal comando, apt showti dirà quale tra i pacchetti è quello che stai cercando:

~ 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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.