¿Cómo instalo las bibliotecas OpenSSL en Ubuntu?

235

Estoy tratando de construir un código en Ubuntu 10.04 LTS que usa OpenSSL 1.0.0. Cuando ejecuto make, invoca g ++ con la opción "-lssl". La fuente incluye:

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

Corrí:

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

Pero supongo que el paquete openssl no incluye la biblioteca. Recibo estos errores en 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

¿Cómo instalo la biblioteca OpenSSL C ++ en Ubuntu 10.04 LTS?

Hice una man g++y (en "Opciones para vincular") para la opción -l dice: "El vinculador busca una lista estándar de directorios para la biblioteca ..." y "Los directorios buscados incluyen varios directorios de sistema estándar ..." ¿Cuáles son esos directorios del sistema estándar?

Daryl Spitzer
fuente
1
No es un duplicado, pero responde ¿Qué son los paquetes * -devel? .
Trovador
Tienes razón sobre la -devconvención de nomenclatura. También puede usar el synapticadministrador de paquetes para enumerar todos los paquetes cuyos nombres contienen libssl; examinar esa lista y sus descripciones probablemente le darán la pista.
Crazyscot
1
Sé que esta pregunta ya está bastante muerta, pero desde que la encontré hace poco, creo que alguien más podría hacerlo también. Si desea enumerar todos los paquetes que son similares a un nombre determinado, me gusta usar> aptitude search <STRING> No requiere un nivel de privilegio raíz para ejecutar una búsqueda.
Evan Larkin
2
solo para agregar a la declaración de Evan, las versiones recientes de Ubuntu llegarán sin el comando aptitude disponible. apt-cache search <packname> funciona de la misma manera (casi) ahora.
Andy
3
En respuesta a su actualización, podría hacerloapt-cache search package-name
TheDoctor

Respuestas:

492

Desea instalar el paquete de desarrollo, que es libssl-dev:

sudo apt-get install libssl-dev
Niki Yoshiuchi
fuente
1
Pero esta no es la versión que quería (1.0.0), que no está empaquetada para 10.04. Vea esta respuesta para 1.0.0: stackoverflow.com/questions/3153114/…
nealmcb
Ah, buena llamada. Solo noté en ese momento que estaba tratando de usar las bibliotecas de desarrollo pero no estaba instalando el paquete -dev. Ni siquiera noté el número de versión.
Niki Yoshiuchi
Esta es la referencia correcta aquí: technologyskill.ga/install-openssl-manually-on-linux o howtoforge.com/tutorial/… las bibliotecas y los archivos de encabezado se encuentran en el mismo directorio después de la instalación: / usr / local / ssl
MickaelT
2
apt installpara nuevo dist ubuntu
AtachiShadow
1
@GeorgeSp Creo que sí, pero aún es más "natural" construirlos en un directorio personalizado utilizando esta instrucción stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз
29

apt-get install libssl-dev

Yann Ramin
fuente
15

¿Cómo podría haberlo descubierto por mí mismo (aparte de hacer esta pregunta aquí)? ¿De alguna manera puedo decirle a apt-get que enumere todos los paquetes y grep para ssl? ¿O necesito saber la convención de nomenclatura "lib * -dev"?

Si está vinculando con, -lfooentonces es probable que la biblioteca libfoo.so. La biblioteca en sí misma es probablemente parte del libfoopaquete, y los encabezados están en ellibfoo-dev paquete como has descubierto.

Algunas personas usan la aplicación "sináptica" GUI ( sudo synaptic) para (localizar e) instalar paquetes, pero prefiero usar la línea de comandos. Una cosa que hace que sea más fácil encontrar el paquete correcto desde la línea de comandos es el hecho de que apt-getadmite la finalización de bash.

Intente escribir sudo apt-get install libssly luego presione tabpara ver una lista de nombres de paquetes coincidentes (que puede ayudar cuando necesite seleccionar la versión correcta de un paquete que tenga múltiples versiones u otras variaciones disponibles).

La finalización de Bash es realmente muy útil ... por ejemplo, también puede obtener una lista de comandos que apt-getadmite escribiendo sudo apt-gety luego presionando tab.

Steve Lemke
fuente
Ubuntu podría aliviar el dolor de la gente, ya que ha sido un problema durante años. Ellos podrían alias openssl-deva libssl-devpero no eligen.
jww
7

Encontré una solución detallada aquí: instalar OpenSSL manualmente en Linux

De la publicación del blog ...:

Los pasos para descargar, compilar e instalar son los siguientes (estoy instalando la versión 1.0.1g a continuación; reemplace "1.0.1g" con su número de versión):

Paso - 1: Descargando OpenSSL:

Ejecute el comando de la siguiente manera:

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

Además, descargue el hash MD5 para verificar la integridad del archivo descargado solo para fines de varificación. En la misma carpeta donde descargó el archivo OpenSSL del sitio 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

Paso - 2: extraiga los archivos del paquete descargado:

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

Ahora, ingrese el directorio donde se extrae el paquete, como aquí está openssl-1.0.1g

$ cd openssl-1.0.1g

Paso - 3: Configuración OpenSSL

Ejecute el siguiente comando con condición opcional para establecer el prefijo y el directorio donde desea copiar los archivos y la carpeta.

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

Puede reemplazar "/ usr / local / openssl" con la ruta del directorio donde desea copiar los archivos y carpetas. Pero asegúrese de hacer estos pasos, verifique si hay algún mensaje de error en la terminal.

Paso - 4: compilar OpenSSL

Para compilar openssl necesitará ejecutar el comando 2: make, make install como se muestra a continuación:

$ make

Nota: verifique si hay algún mensaje de error para fines de verificación.

Paso -5: Instalación de OpenSSL:

$ sudo make install

O sin sudo

$ make install

Eso es. OpenSSL se ha instalado correctamente. Puede ejecutar el comando de versión para ver si funcionó o no de la siguiente manera:

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

OpenSSL 1.0.1g 7 Apr 2014

Mann
fuente
1
Para completar, debe incluir la verificación de la firma PGP para asegurarse de que la firma de los archivos sea válida. Como en gnupg.org/download/integrity_check.html y openoffice.org/download/checksums.html#pgp_linux
djondal
5

Otra forma de instalar la biblioteca openssl desde el código fuente en Ubuntu, sigue los pasos a continuación, aquí WORKDIRestá tu directorio de trabajo:

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
BH Xie
fuente
4

Quieres el openssl-develpaquete. Al menos creo que está -develen Ubuntu. Puede ser -dev. Es uno de los dos.

jonescb
fuente
1
Ambos sudo apt-get install openssl-devy sudo apt-get install openssl-develdevolver "E: No se pudo encontrar el paquete ..."
Daryl Spitzer
66
Aparentemente es libssl-dev como han dicho los demás. No uso Ubuntu, así que no estoy familiarizado con los nombres de los paquetes.
jonescb
77
Openssl-devel era lo que necesitaba para CentOS 6. sudo yum install openssl-devel*
Banjer 05 de
55
Seamos honestos: este nombre apesta :)
mlvljr
bueno, este nombre apesta :) - pero aún así es el mejor estándar de nombres que podemos tener ... pero alguien realmente DEBERÍA finalmente comenzar a enseñar esto en las materias escolares "conceptos básicos de TI" en TODAS las escuelas del mundo.
Filip OvertoneSinger Rydlo
0

Como regla general, cuando esté en Debian o Ubuntu y le falte un archivo de desarrollo (o cualquier otro archivo), use apt-filepara averiguar qué paquete proporciona ese archivo:

~ 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 vistazo rápido a cada uno de los paquetes que devuelve el comando, usando apt showle dirá cuál de los paquetes es el que está buscando:

~ 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
Vincent Fourmond
fuente
-3

sudo apt-get install libcurl4-openssl-dev

Nursnaaz
fuente