GmSSL是一个开源的密码工具箱,是OpenSSL的国密扩展版,支持国密算法。
现在国内慢慢普及国密算法替代国际算法,国内的环境使用的密码算法更新换代。
这两天要搭建一个支持国密的服务器,正好Github上有国密的开源项目。在安装过程中遇到了很多问题,一开始用Ubuntu 18.04一直出问题,后来改用CentOS 7,发现是自己配置路径的问题,和Linux版本关系不大。现在把自己安装的整个过程记下来,以后没准还能用上。
特别感谢GmSSL的开源作者 guanzhi。
The GmSSL repository on Github: GmSSL
The GmSSL Project: gmssl.org
因为我直接装的时候出问题了啊!作为一个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
于是就有了下面的一通骚操作。
安装编译工具
安装 OpenSSL 1.1.0g
配置 PATH 和 libraries
安装 GmSSL
上面提过,GmSSL需要有相应版本的库支持,所以按照步骤就这样。我也不知道逻辑不逻辑,反正我这么搞就好使。。。
首先安装编译工具。一般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
安装完成后,看下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啦?
有了上面的底子,安装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.