如何在Ubuntu上安装OpenSSL库?


235

我正在尝试在使用OpenSSL 1.0.0的Ubuntu 10.04 LTS上构建一些代码。当我运行make时,它将使用“ -lssl”选项调用g ++。来源包括:

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

我跑了:

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

但是我猜想openssl包不包含该库。我在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

如何在Ubuntu 10.04 LTS上安装OpenSSL C ++库?

man g++对-l选项做了一个和(在“链接的选项”下),其中指出:“链接器在标准目录列表中搜索库...”和“搜索的目录包括多个标准系统目录...”。这些标准系统目录是什么?


1
不是完全重复,但回答是什么* -devel软件包?
Troubadour

您对-dev命名约定是正确的。您还可以使用synaptic软件包管理器列出名称中包含libssl的所有软件包-浏览该列表及其描述可能会为您提供线索。
crazyscot 2010年

1
我知道这个问题现在已经很死了,但是自从我最近发现这个问题以来,我想别人也可能会问。如果要列出所有与某个名称相似的软件包,我想使用> aptitude search <STRING>它不需要root特权级别即可运行搜索。
埃文·拉金

2
只是为了增加Evan的声明,Ubuntu的最新版本没有可用的aptitude命令。apt-cache搜索<packname>现在(几乎)以相同的方式工作。
安迪(Andy)

3
为了回应您的更新,您可以做apt-cache search package-name
TheDoctor

Answers:


492

您要安装开发软件包libssl-dev:

sudo apt-get install libssl-dev

1
但这不是他想要的版本(1.0.0),没有为10.04打包。看到这个答案为1.0.0: stackoverflow.com/questions/3153114/...
nealmcb

啊,打个好电话。当时我只注意到他正在尝试使用开发库,但没有安装-dev软件包。我什至没有注意到版本号。
Niki Yoshiuchi 2010年

这是正确的参考这里:technologyskill.ga/install-openssl-manually-on-linuxhowtoforge.com/tutorial/...库和头文件在安装后的同一目录下找到:在/ usr /本地/ SSL
MickaelT

2
apt install对于新发行的ubuntu
AtachiShadow

1
@GeorgeSp我想是这样,但它仍然是更“自然”使用这个指令来构建他们在一个自定义目录stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз


15

我怎么能自己弄清楚(除了在这里问这个问题)?我可以以某种方式告诉apt-get列出所有软件包,并为ssl列出grep吗?还是我需要知道“ lib * -dev”的命名约定?

如果您要链接,-lfoo则可能是该库libfoo.so。库本身可能是libfoo程序包的一部分,而标头位于libfoo-dev您已经发现程序包中。

有些人使用GUI的“突触”应用程序(sudo synaptic)(定位和)安装软件包,但我更喜欢使用命令行。apt-get支持bash补全这一事实使从命令行中找到正确的程序包更加容易。

尝试键入内容sudo apt-get install libssl,然后单击tab以查看匹配的软件包名称的列表(当您需要选择具有多个版本或其他可用版本的软件包的正确版本时,这会有所帮助)。

Bash补全实际上非常有用……例如,您还可以apt-get通过键入sudo apt-get然后点击来获得支持的命令列表tab


Ubuntu多年来一直是一个问题,它可以减轻人们的痛苦。他们可能别名openssl-devlibssl-dev,但他们选择不。
jww

7

我在这里找到了详细的解决方案:在Linux上手动安装OpenSSL

从博客文章...:

下载,编译和安装的步骤如下(我正在安装以下版本1.0.1g;请用您的版本号替换“ 1.0.1g”):

步骤1:下载OpenSSL:

运行以下命令:

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

另外,下载MD5哈希值以仅出于分类目的验证下载文件的完整性。在您从网站下载OpenSSL文件的文件夹中:

$ 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

步骤2:从下载的程序包中提取文件:

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

现在,输入解压缩包的目录,如下所示:openssl-1.0.1g

$ cd openssl-1.0.1g

步骤3:配置OpenSSL

在可选条件下运行以下命令,以设置要在其中复制文件和文件夹的前缀和目录。

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

您可以将“ / usr / local / openssl”替换为要在其中复制文件和文件夹的目录路径。但是请确保在执行此步骤时检查终端上是否有任何错误消息。

步骤4:编译OpenSSL

要编译openssl,您将需要运行2个命令:make,如下进行make install:

$ make

注意:检查是否有任何错误消息以供验证。

步骤-5:安装OpenSSL:

$ sudo make install

或没有须藤,

$ make install

而已。OpenSSL已成功安装。您可以运行version命令,以查看它是否有效,如下所示:

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

OpenSSL 1.0.1g 7 Apr 2014


1
为了完整起见,您应该包括PGP签名验证,以确保文件签名有效。如gnupg.org/download/integrity_check.htmlopenoffice.org/download/checksums.html#pgp_linux
djondal

5

从Ubuntu上的源代码安装openssl库的另一种方法是,按照以下步骤操作,这WORKDIR是您的工作目录:

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

您要openssl-devel包装。至少我认为它-devel在Ubuntu上。可能是-dev。这是两者之一。


1
无论sudo apt-get install openssl-devsudo apt-get install openssl-devel回报:“E找不到包......”
达里尔斯皮策

6
显然是其他人所说的libssl-dev。我不使用Ubuntu,所以我对软件包名称不熟悉。
jonescb 2010年

7
OpenSSL的-devel的是我需要为CentOS 6.什么 sudo yum install openssl-devel*
Banjer

5
说实话:这个命名很烂:)
mlvljr 2014年

好吧,这种命名很糟糕:)-但这仍然是我们可以拥有的最佳命名标准...但是,确实应该有人终于开始在世界所有学校的学校“ IT基础” 课程中教授此命名法。
Filip Overtone歌手Rydlo

0

通常,在Debian或Ubuntu上时,如果缺少开发文件(或与此相关的任何其他文件),请使用apt-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

快速浏览一下命令返回的每个软件包,使用apt show可以告诉您要查找的是哪个软件包:

~ 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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.