Ubuntu的版本是18.04。使用openssl version命令查看openssl版本,可以看到Ubuntu自带了openssl-1.1.0版本,因此安装新版本需要替换旧版本。
打开openssl官网的下载页面可以看到最新的软件包,下载openssl-1.1.1b.tar.gz。放到Ubuntu系统中。
使用命令解压。
tar -xzvf openssl-1.1.1b.tar.gz
使用
cd openssl-1.1.1b
进入目录,并且使用./config生成MakeFile,不加任何参数,默认的安装位置为:/usr/local/bin/openssl
。
使用make
进行编译
不放心的话可以使用make test
检查一下(可选步骤)
使用sudo make install
进行安装,这里一定要选择root用户的权限执行。
到上一步openssl就算安装好了,但是还无法使用,需要通过软链接的方式将新旧版本就行替换,依次运行下列命令。
sudo mv /usr/bin/openssl /usr/bin/openssl.old //将旧版本的openssl进行备份
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl //将新版本的openssl进行软链接
cd /etc/ //进入etc目录
su //下一步一定要切换到root用户
echo "/usr/local/lib" >> ld.so.conf //将openssl的安装路径加入配置中
ldconfig //重新加载配置
使用openssl version
查看,已经安装好。
如果需要更换版本的话(一般也不会),修改软链接的名称即可,参照:
sudo mv /usr/bin/openssl /usr/bin/openssl.new
sudo mv /usr/bin/openssl.old /usr/bin/openssl
5.安装依赖库
openssl
安装结束之后,需要安装依赖库才能够进行编程,使用sudo apt-get install libssl-dev
安装依赖库,可以看到同时也下载了libssl-doc
。
由于下载的依赖库比较旧,我们在前面安装的openssl包中已经安装了新版本的库,因此需要将新旧库进行替换,仍然要做上一步的原因是尽量把能自动配置安装的东西安装好,只需要手动替换新的东西。下面是新旧库的对比(上面为新):
依次使用以下命令进行替换:
sudo mv /usr/include/openssl /usr/include/openssl.old //将旧版本进行备份
sudo ln -s /usr/local/include/openssl /usr/include/openssl //将新版本进行软链接
6.测试
编写一个测试代码test_openssl.c:
#include
#include
int main(){
OpenSSL_add_all_algorithms();
return 0;
}
然后用下面的命令编译:
gcc -o to test_openssl.c -L/usr/local/openssl/lib -lssl -lcrypto -ldl -lpthread
执行./to;echo $?,结果打印0。
https://www.cnblogs.com/jsjliyang/p/10606908.html
注意可能会出现安装错误
报错:
./openssl: relocation error: ./openssl: symbol EVP_mdc2 version OPENSSL_1_1_0 not defined in file libcrypto.so.1.1 with link time reference
open1.1.1安装成功后,执行openssl产生错误
用ldd /usr/local/bin/openssl
命令查到openssl 的依赖库为
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
发现这个文件是19年的,现在是20年,我猜是安装openssl1.1.1之前这个文件就存在了(是不是1.1.0和1.1.1版本都用libcrypto.so.1.1-_-),然后安装的时候发现这个文件存在就没用新的去覆盖。
后来用新生成的libcrypto.so.1.1
替换/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
就可以运行openssl了
即输入
sudo find / -name "libcrypto.so"
找到这个lib的位置,如/usr/local/bin/libcrypto.so.1.1
那么,将这个文件cp到对应目录下
sudo cp /usr/local/bin/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
或者将下载的目录下生成的libcrypto.so.1.1cp到对应目录下
sudo cp /usr/local/bin/libcrypto.so.1.1 /usr/lib/aarch64-linux-gnu/