天天看點

CentOS 7 Linux 安裝 GmSSL 2.4.4 with OpenSSL 1.1.0庫0x00 為什麼要搞這個?0x01 為什麼不直接按官方文檔說明去裝?0x02 我的安裝順序0x03 如何安裝對應版本的OpenSSL0x04 配置 PATH 和 libraries0x05 安裝GmSSL

0x00 為什麼要搞這個?

GmSSL是一個開源的密碼工具箱,是OpenSSL的國密擴充版,支援國密算法。

現在國内慢慢普及國密算法替代國際算法,國内的環境使用的密碼算法更新換代。

這兩天要搭建一個支援國密的伺服器,正好Github上有國密的開源項目。在安裝過程中遇到了很多問題,一開始用Ubuntu 18.04一直出問題,後來改用CentOS 7,發現是自己配置路徑的問題,和Linux版本關系不大。現在把自己安裝的整個過程記下來,以後沒準還能用上。

特别感謝GmSSL的開源作者 guanzhi。

The GmSSL repository on Github: GmSSL

The GmSSL Project: gmssl.org

0x01 為什麼不直接按官方文檔說明去裝?

因為我直接裝的時候出問題了啊!作為一個Linux小白,隻有不斷摸索啊!

目前時間(2019/01/26)的GmSSL版本為 2.4.4,用的openssl版本是1.1.0,用的庫是 libcrypto.so.1.1 和 libssl.so.1.1。

但現在openssl的最新版本是 openssl 3,庫頁都是 libcrypto.so.3 和 libssl.so.3。

是以按作者的預設安裝方式安裝并不相容,會出現找不到目錄的情況。

除非你對編譯什麼的很熟了,config 的時候參數都填好了,安裝得很順利,那你可能沒必要繼續讀下去了。。像我這種直接 ./config 和 make 的,不花點時間可搞不好。。。

而且目前最新的 CentOS 7 預設安裝的是 openssl 1.0.2, 庫版本更低,奇怪的是即使重新 yum install openssl 都安裝不了新版本。

不信你自己看看自己的openssl版本:

openssl version
           

于是就有了下面的一通騷操作。

0x02 我的安裝順序

安裝編譯工具

安裝 OpenSSL 1.1.0g

配置 PATH 和 libraries

安裝 GmSSL

上面提過,GmSSL需要有相應版本的庫支援,是以按照步驟就這樣。我也不知道邏輯不邏輯,反正我這麼搞就好使。。。

0x03 如何安裝對應版本的OpenSSL

首先安裝編譯工具。一般CentOS都自帶了,但還是要檢查一下。下面的指令會安裝編譯器和一些其他的libraries。在Terminal 運作以下指令:

sudo yum install libtool perl-core zlib-devel -y
           

然後就可以下OpenSSL了。我這裡從Github上下的的 tar 包,沒直接git下來因為git下來是openssl 3.0。我們這裡用 1.1.0版本。

curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.tar.gz
           

下載下傳好了解壓縮(注意你的下載下傳路徑,别搞亂了)。

tar -zxvf OpenSSL_1_1_0g.tar.gz
cd openssl-OpenSSL_1_1_0g
           

然後配置和編譯,注意我這裡的配置路徑。在配置時,prefix 和 openssldir 設定OpenSSL的路徑,shared建立共享libraries,zlib是使用zlib library。配置完成後make編譯。編譯完成後 make test 一下,看有木有errors,有問題再修。

sudo ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
sudo make
sudo make test
           

沒啥問題了就可以正式安裝 libraries。

sudo make install
           

0x04 配置 PATH 和 libraries

安裝完成後,看下OpenSSL版本。

啥??為啥安完還是老版本??

因為老版本也安裝在你的系統裡啊。路徑還沒改呢。此外,當OpenSSL更新後用yum安裝它時,會直接覆寫編譯過的版本,并且需要重新編譯,這期間就容易出問題。是以還是手動讓系統去使用剛剛編譯過的OpenSSL。

按照如下指令建個檔案:

sudo vi /etc/profile.d/openssl.sh
           

把下面的内容貼在這個檔案裡面:

pathmunge /usr/local/openssl/bin
           

儲存,重新開機。然後再 openssl version 一下看看版本。。。。

。。。。

。。。

。。

我靠,大大的ERROR!沒事兒,繼續搞:

sudo vi /etc/ld.so.conf.d/openssl-1.1.0g.conf
           

把下面這段貼進去:

/usr/local/openssl/lib
           

讓linker把新的libraries加進去。然後執行:

sudo ldconfig -v
           

最後openssl version,看看版本是不是 1.1.0啦?

0x05 安裝GmSSL

有了上面的底子,安裝GmSSL就比較容易了。

在 Github上 GmSSL 的項目下載下傳項目,配置,編譯。prefix 和 openssldir 用上面的,保持一緻。挨個運作下面的指令:

git clone https://github.com/guanzhi/GmSSL.git
cd GmSSL
sudo ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
sudo make 
sudo make install
           

等幾分鐘就好了。然後看下 gmssl 的版本:

gmssl version
           

GmSSL 2.4.4 - OpenSSL 1.1.0d  26 Jan 2019

Easy.

繼續閱讀