1. 簡介
OpenSSL是一個開放源代碼的軟體庫包,應用程式可以使用這個包來進行安全通信,避免竊聽,同時确認另一端連接配接者的身份。這個包廣泛被應用在網際網路的網頁伺服器上。
2. 檢視目前版本OpenSSL路徑
which openssl //檢視目前使用的openssl,因為需要在更新openssl之後,我們需要使用軟連結将其連結回此路徑
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iNyIzMmJjNwMTN1gDO3EWN0IWMmlDNzUWNkFWMmRmZw8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
方法一源碼手動安裝步驟:
依賴安裝
注意:安裝openssl依賴于zlib和perl-CPAN,否則會報下方3.3步驟中的錯誤
zlib的安裝可以點選:詳解CentOS 8.2圖文源碼安裝zlib 1.2.11
perl-CPAN的安裝:yum install -y perl-CPAN
3.1 擷取安裝包
在http://www.openssl.org/source/上可以擷取目前最新的版本,
wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
如果以上位址無法下載下傳或者下載下傳慢的話,可以從以下位址下載下傳對應的openssl檔案并且上傳到個人伺服器進行後續操作
http://download.youceba.com/dir/25806543-41266762-c1884c
3.2 解壓
tar -xzvf openssl-1.1.1h.tar.gz
cd openssl-1.1..1h
3.3 配置
./config –help
# 配置參數選項
–openssldir=OPENSSLDIR #配置檔案目錄,預設是/usr/local/ssl
–prefix=DIR #安裝目錄,預設為 openssldir目錄
[no-]threads #是否編譯支援多線程的庫。預設支援
[no-]shared #是否生成動态連接配接庫。預設生成的是靜态庫。
我的配置選項指令是:
./config shared –openssldir=/data/install/openssl –prefix=/data/install/openssl
一定記得加上–shared選項, 否則openssh編譯的時候會找不到新安裝的openssl的library, 會報錯: openssl的 header和library版本不比對,如圖示:
如果是幹淨的系統安裝的話,報錯如下,缺少依賴庫perl-CPAN:
[[email protected] openssl-1.1.1h]# ./config shared --openssldir=/data/install/openssl --prefix=/data/install/openssl
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1h (0x1010108fL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile
Can't locate Getopt/Long.pm in @INC (you may need to install the Getopt::Long module) (@INC contains: . /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at configdata.pm line 15524.
BEGIN failed--compilation aborted at configdata.pm line 15524.
Compilation failed in require.
BEGIN failed--compilation aborted.
解決方案:見上述“依賴安裝”注意事項
3.4 編譯和安裝
make && make install
3.5 修改系統配置,寫入openssl庫檔案的搜尋路徑
- 檢視openssl的路徑
which openssl
- 檢視依賴的庫,ldd後面跟which openssl查詢出的路徑
譬如:ldd /usr/bin/openssl
如果有錯誤資訊的話,譬如沒有找到openssl的連結庫(libssl.so.1.1、libcrypto.so.1.1)并且執行openssl version也會報錯:
error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
或者顯示的版本不是自己安裝的版本的話,譬如顯示如下:
OpenSSL 1.1.1c FIPS 28 May 2019
那麼就需要進行以下操作:
- 添加内容,将源碼編譯的openssl路徑下的lib加入到預設搜尋路徑: /data/install/openssl/lib到/etc/ld.so.conf檔案中
echo “/data/install/openssl/lib/” >> /etc/ld.so.conf
- 使修改後的/etc/ld.so.conf生效
ldconfig -v
OpenSSL在編譯安裝時自帶了其依賴的庫檔案,預設系統會到/usr/lib、/usr/lib64下尋找所有的庫檔案,系統中預設是沒有上述兩個庫的,需要将OpenSSL自帶的庫加入到系統環境。
- 設定openssl指令的軟連結
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /data/install/openssl/bin/openssl /usr/bin/openssl
- 驗證是否安裝成功
openssl version -a
方法二安裝:
yum -y install openssl openssl-devel