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.