Como instalo as bibliotecas OpenSSL no Ubuntu?

235

Estou tentando criar algum código no Ubuntu 10.04 LTS que usa o OpenSSL 1.0.0. Quando executo o make, ele invoca o g ++ com a opção "-lssl". A fonte inclui:

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

Eu corri:

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

Mas acho que o pacote openssl não inclui a biblioteca. Eu recebo esses erros no 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

Como instalo a biblioteca OpenSSL C ++ no Ubuntu 10.04 LTS?

Eu fiz um man g++e (em "Opções para vincular") para a opção -l que declara: "O vinculador pesquisa uma lista padrão de diretórios da biblioteca ..." e "Os diretórios pesquisados ​​incluem vários diretórios padrão do sistema ..." Quais são esses diretórios padrão do sistema?

Daryl Spitzer
fonte
1
Não é uma duplicata, mas é respondido por O que são pacotes * -devel? .
Troubadour
Você está certo sobre a -devconvenção de nomenclatura. Você também pode usar o synapticgerenciador de pacotes para listar todos os pacotes cujos nomes contêm libssl - navegar nessa lista e suas descrições provavelmente fornecerão uma pista.
crazyscot
1
Sei que essa pergunta já está morta, mas desde que a encontrei recentemente, acho que outra pessoa também pode. Se você deseja listar todos os pacotes semelhantes a um determinado nome, eu gosto de usar> aptitude search <STRING> Não é necessário nível de privilégios de root para executar uma pesquisa.
Evan Larkin
2
apenas para acrescentar à declaração de Evan, versões recentes do Ubuntu estão chegando sem o comando aptitude disponível. A pesquisa apt-cache <packname> funciona da mesma maneira (quase) agora.
Andy
3
Em resposta à sua atualização, você poderia fazerapt-cache search package-name
TheDoctor

Respostas:

492

Você deseja instalar o pacote de desenvolvimento, que é libssl-dev:

sudo apt-get install libssl-dev
Niki Yoshiuchi
fonte
1
Mas esta não é a versão que ele queria (1.0.0), que não está empacotada para 10.04. Veja esta resposta para a 1.0.0: stackoverflow.com/questions/3153114/…
nealmcb
Ah, boa ligação. Eu só notei na época que ele estava tentando usar as bibliotecas de desenvolvimento, mas não estava instalando o pacote -dev. Eu nem percebi o número da versão.
Niki Yoshiuchi
Esta é a referência correta aqui: technologyskill.ga/install-openssl-manually-on-linux ou howtoforge.com/tutorial/… bibliotecas e arquivos de cabeçalho são encontrados no mesmo diretório após a instalação: / usr / local / ssl
MickaelT
2
apt installpara novo dist ubuntu
AtachiShadow 17/02/19
1
@GeorgeSp Eu acho que sim, mas ainda é mais "natural" para construí-los em um diretório personalizado usando esta instrução stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз
29

apt-get install libssl-dev

Yann Ramin
fonte
15

Como eu pude descobrir isso sozinho (além de fazer essa pergunta aqui)? De alguma forma, posso dizer ao apt-get para listar todos os pacotes e grep para ssl? Ou preciso conhecer a convenção de nomenclatura "lib * -dev"?

Se você está vinculando -lfoo, é provável que a biblioteca libfoo.so. A biblioteca em si provavelmente faz parte do libfoopacote, e os cabeçalhos estão no libfoo-devpacote, como você descobriu.

Algumas pessoas usam o aplicativo "sináptico" da GUI ( sudo synaptic) para (localizar e) instalar pacotes, mas eu prefiro usar a linha de comando. Uma coisa que facilita a localização do pacote certo na linha de comando é o fato de apt-getoferecer suporte à conclusão do bash.

Tente digitar sudo apt-get install libssle, em seguida, pressione tabpara ver uma lista de nomes de pacotes correspondentes (o que pode ajudar quando você precisa selecionar a versão correta de um pacote que possui várias versões ou outras variações disponíveis).

A conclusão do Bash é realmente muito útil ... por exemplo, você também pode obter uma lista de comandos apt-getcompatíveis digitando sudo apt-gete pressionando tab.

Steve Lemke
fonte
O Ubuntu pode aliviar a dor do pessoal, já que esse é um problema há anos. Eles poderiam apelido openssl-devpara libssl-devmas eles não escolher.
J2
7

Encontrei uma solução detalhada aqui: Instale o OpenSSL manualmente no Linux

Na postagem do blog ...:

As etapas para baixar, compilar e instalar são as seguintes (estou instalando a versão 1.0.1g abaixo; substitua "1.0.1g" pelo número da sua versão):

Etapa - 1: Fazendo o download do OpenSSL:

Execute o comando como abaixo:

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

Além disso, faça o download do hash MD5 para verificar a integridade do arquivo baixado apenas para fins de varificação. Na mesma pasta em que você baixou o arquivo OpenSSL do site:

$ 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

Etapa - 2: Extraia os arquivos do pacote baixado:

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

Agora, digite o diretório em que o pacote é extraído, como aqui é openssl-1.0.1g

$ cd openssl-1.0.1g

Etapa 3: Configuração do OpenSSL

Execute o comando abaixo com condição opcional para definir o prefixo e o diretório em que deseja copiar arquivos e pastas.

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

Você pode substituir “/ usr / local / openssl” pelo caminho do diretório em que deseja copiar os arquivos e pastas. Mas certifique-se de que, ao executar essas etapas, verifique se há alguma mensagem de erro no terminal.

Etapa - 4: Compilando o OpenSSL

Para compilar o openssl, você precisará executar o comando 2: make, make install como abaixo:

$ make

Nota: verifique se há alguma mensagem de erro para fins de verificação.

Etapa -5: Instalando o OpenSSL:

$ sudo make install

Ou sem sudo,

$ make install

É isso aí. O OpenSSL foi instalado com sucesso. Você pode executar o comando version para ver se funcionou ou não como abaixo:

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

OpenSSL 1.0.1g 7 Apr 2014

Mann
fonte
1
Para garantir a integridade, inclua a verificação da assinatura PGP para garantir que a assinatura dos arquivos seja válida. Como em gnupg.org/download/integrity_check.html e openoffice.org/download/checksums.html#pgp_linux
djondal
5

Outra maneira de instalar a biblioteca openssl a partir do código fonte no Ubuntu, segue as etapas abaixo, aqui WORKDIRestá o seu diretório de trabalho:

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
fonte
4

Você quer o openssl-develpacote. Pelo menos eu acho que é -develno Ubuntu. Pode ser -dev. É um dos dois.

jonescb
fonte
1
Ambos sudo apt-get install openssl-deve sudo apt-get install openssl-develretorno "E: Não foi possível encontrar o pacote ..."
Daryl Spitzer
6
Aparentemente, é libssl-dev, como os outros disseram. Eu não uso o Ubuntu, então não estou familiarizado com os nomes dos pacotes.
jonescb
7
Openssl-devel era o que eu precisava para CentOS 6. sudo yum install openssl-devel*
Banjer
5
Vamos ser honestos: esta nomenclatura suga :)
mlvljr
bem, essa nomeação é péssima :) - mas ainda é o melhor padrão de nomeação que podemos ter ... mas alguém realmente DEVE finalmente começar a ensinar isso na disciplina "noções básicas de TI" em TODAS as escolas do mundo.
Filip OvertoneSinger Rydlo
0

Como regra geral, quando estiver no Debian ou Ubuntu e estiver faltando um arquivo de desenvolvimento (ou qualquer outro arquivo), use apt-filepara descobrir qual pacote fornece esse arquivo:

~ 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

Uma rápida olhada em cada um dos pacotes retornados pelo comando, usando apt showlhe dirá qual dentre os pacotes é o que você está procurando:

~ 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
fonte
-3

sudo apt-get install libcurl4-openssl-dev

Nursnaaz
fonte