Làm cách nào để cài đặt thư viện OpenSSL trên Ubuntu?


234

Tôi đang cố gắng xây dựng một số mã trên Ubuntu 10.04 LTS sử dụng OpenSSL 1.0.0. Khi tôi chạy make, nó gọi g ++ với tùy chọn "-lssl". Nguồn bao gồm:

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

Tôi đã chạy

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

Nhưng tôi đoán gói openssl không bao gồm thư viện. Tôi nhận được những lỗi này khi thực hiện:

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

Làm cách nào để cài đặt thư viện OpenSSL C ++ trên Ubuntu 10.04 LTS?

Tôi đã thực hiện man g++và (trong "Tùy chọn để liên kết") cho tùy chọn -l có ghi: "Trình liên kết tìm kiếm danh sách thư mục chuẩn cho thư viện ..." và "Các thư mục được tìm kiếm bao gồm một số thư mục hệ thống tiêu chuẩn ..." Những thư mục hệ thống tiêu chuẩn là gì?


1
Không hoàn toàn trùng lặp, nhưng được trả lời bởi các gói * -devel là gì? .
Troubadour

Bạn nói đúng về -devquy ước đặt tên. Bạn cũng có thể sử dụng synaptictrình quản lý gói để liệt kê tất cả các gói có tên chứa libssl - duyệt danh sách đó và các mô tả của chúng có thể sẽ cung cấp cho bạn manh mối.
crazyscot

1
Tôi biết câu hỏi này khá là chết nhưng vì gần đây tôi đã tìm thấy nó nên tôi nghĩ người khác cũng có thể. Nếu bạn muốn liệt kê tất cả các gói tương tự với một tên nhất định, tôi muốn sử dụng> tìm kiếm năng khiếu <STRING> Nó không yêu cầu cấp đặc quyền gốc để chạy tìm kiếm.
Evan Larkin

2
chỉ để thêm vào tuyên bố của Evan, các phiên bản gần đây của Ubuntu sẽ xuất hiện mà không có lệnh aptitude có sẵn. Tìm kiếm apt-cache <packname> hoạt động theo cùng một cách (gần như) bây giờ.
Andy

3
Trả lời bản cập nhật của bạn, bạn có thể làmapt-cache search package-name
TheDoctor

Câu trả lời:


491

Bạn muốn cài đặt gói phát triển, đó là libssl-dev:

sudo apt-get install libssl-dev

1
Nhưng đây không phải là phiên bản anh ấy muốn (1.0.0), không được đóng gói cho 10.04. Xem câu trả lời này cho 1.0.0: stackoverflow.com/questions/3153114/ từ
nealmcb

À, gọi tốt. Lúc đó tôi chỉ nhận thấy rằng anh ta đang cố sử dụng các thư viện phát triển nhưng không cài đặt gói -dev. Tôi thậm chí không nhận thấy số phiên bản.
Niki Yoshiuchi

Đây là tài liệu tham khảo phù hợp ở đây: technologyskill.ga/install-openssl-manual-on-linux hoặc howtoforge.com/tutorial/ Thư viện và các tệp tiêu đề được tìm thấy trong cùng một thư mục sau khi cài đặt: / usr / local / ssl
MickaelT

2
apt installcho phiên bản mới của Ubuntu
AtachiShadow 17/2/19

1
@GeorgeSp Tôi nghĩ vậy, nhưng vẫn còn "tự nhiên" hơn khi xây dựng chúng trong một thư mục tùy chỉnh bằng cách sử dụng lệnh stackoverflow.com/a/49578644/7315276
ɛIc_ↄIз


15

Làm thế nào tôi có thể tự mình tìm ra điều đó (ngoài việc hỏi câu hỏi này ở đây)? Tôi có thể bằng cách nào đó nói với apt-get để liệt kê tất cả các gói và grep cho ssl không? Hay tôi cần biết quy ước đặt tên "lib * -dev"?

Nếu bạn đang liên kết với -lfoothì thư viện có khả năng libfoo.so. Thư viện có thể là một phần của libfoogói và các tiêu đề nằm trong libfoo-devgói như bạn đã khám phá.

Một số người sử dụng ứng dụng GUI "synaptic" ( sudo synaptic) để (định vị và) cài đặt các gói, nhưng tôi thích sử dụng dòng lệnh. Một điều giúp dễ dàng tìm thấy gói phù hợp từ dòng lệnh là thực tế apt-gethỗ trợ hoàn thành bash.

Hãy thử gõ sudo apt-get install libsslvà sau đó nhấn tabđể xem danh sách các tên gói phù hợp (có thể giúp ích khi bạn cần chọn phiên bản chính xác của gói có nhiều phiên bản hoặc các biến thể khác có sẵn).

Hoàn thành Bash thực sự rất hữu ích ... ví dụ, bạn cũng có thể nhận được một danh sách các lệnh apt-gethỗ trợ bằng cách gõ sudo apt-getvà sau đó nhấn tab.


Ubuntu có thể giảm bớt nỗi đau cho mọi người vì nó là một vấn đề trong nhiều năm. Họ có thể bí danh openssl-devđể libssl-devnhưng họ quyết định không đến.
jww

7

Tôi đã tìm thấy một giải pháp chi tiết tại đây: Cài đặt OpenSSL thủ công trên Linux

Từ bài đăng trên blog ...:

Các bước để tải xuống, biên dịch và cài đặt như sau (Tôi đang cài đặt phiên bản 1.0.1g bên dưới; vui lòng thay thế "1.0.1g" bằng số phiên bản của bạn):

Bước - 1: Tải xuống OpenSSL:

Chạy lệnh như dưới đây:

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

Ngoài ra, tải xuống hàm băm MD5 để xác minh tính toàn vẹn của tệp đã tải xuống chỉ nhằm mục đích thay đổi. Trong cùng thư mục mà bạn đã tải xuống tệp OpenSSL từ trang 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

Bước - 2: Giải nén tập tin từ gói đã tải xuống:

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

Bây giờ, hãy nhập thư mục nơi gói được giải nén như ở đây là openssl-1.0.1g

$ cd openssl-1.0.1g

Bước - 3: Cấu hình OpenSSL

Chạy bên dưới lệnh với điều kiện tùy chọn để đặt tiền tố và thư mục mà bạn muốn sao chép tệp và thư mục.

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

Bạn có thể thay thế / Nhưng hãy chắc chắn trong khi thực hiện các bước này kiểm tra bất kỳ thông báo lỗi trên thiết bị đầu cuối.

Bước - 4: Biên dịch OpenSSL

Để biên dịch openssl, bạn sẽ cần chạy 2 lệnh: make, make install như dưới đây:

$ make

Lưu ý: kiểm tra bất kỳ thông báo lỗi cho mục đích xác minh.

Bước -5: Cài đặt OpenSSL:

$ sudo make install

Hoặc không có sudo,

$ make install

Đó là nó. OpenSSL đã được cài đặt thành công. Bạn có thể chạy lệnh phiên bản để xem nó có hoạt động hay không như dưới đây:

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

OpenSSL 1.0.1g 7 Apr 2014


1
Để đầy đủ, bạn nên bao gồm xác minh chữ ký PGP để đảm bảo rằng chữ ký tệp hợp lệ. Như trong gnupg.org/doad/integrity_check.htmlopenoffice.org/doad/checksums.html#pgp_linux
djondal

5

Một cách khác để cài đặt thư viện openssl từ mã nguồn trên Ubuntu, hãy làm theo các bước dưới đây, đây WORKDIRlà thư mục làm việc của bạn:

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

Bạn muốn openssl-develgói. Ít nhất tôi nghĩ nó có -develtrên Ubuntu. Có thể -dev. Đó là một trong hai.


1
Cả hai sudo apt-get install openssl-devsudo apt-get install openssl-develtrả lại "E: Không thể tìm thấy gói ..."
Daryl Spitzer

6
Rõ ràng đó là libssl-dev như những người khác đã nói. Tôi không sử dụng Ubuntu, vì vậy tôi không quen với tên gói.
jonescb

7
Openssl-devel là những gì tôi cần cho CentOS 6. sudo yum install openssl-devel*
Banjer

5
Hãy trung thực: cách đặt tên này thật tệ :)
mlvljr

tốt, cách đặt tên này thật tệ :) - nhưng đây vẫn là tiêu chuẩn đặt tên tốt nhất mà chúng ta có thể có ... nhưng cuối cùng ai đó thực sự NÊN bắt đầu dạy điều này ở môn học "cơ bản về CNTT" ở TẤT CẢ các trường học trên thế giới.
Filip OvertoneSinger Rydlo

0

Theo nguyên tắc chung, khi trên Debian hoặc Ubuntu và bạn đang thiếu tệp phát triển (hoặc bất kỳ tệp nào khác cho vấn đề đó), hãy sử dụng apt-fileđể tìm ra gói nào cung cấp tệp đó:

~ 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

Nhìn lướt qua từng gói được lệnh trả về, sử dụng apt showsẽ cho bạn biết gói nào trong số các gói bạn đang tìm:

~ 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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.