OpenSSL动态链接库
尘世中迷途小码农 人气:0Openssl 是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。调用Openssl的函数就可以实现一个SSL加密的安全数据传输通道,从而保证客户端和服务器之间数据的安全。
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
如果程序需要使用OpenSSL的API,那么可以通过源码安装得到DLL或者SO库文件,这样就能在Windows和Linux环境下使用其API进行二次开发了。
下载源码
从Github上下载
请注意选择分支:
https://github.com/openssl/opensslhttps://github.com/openssl/openssl
https://github.com/openssl/openssl
从官网下载
https://www.openssl.org/source/https://www.openssl.org/source/
https://www.openssl.org/source/可以选择目前最新版本:openssl-1.1.1l.tar.gz,
对于历史版本,可以从这里下载:https://www.openssl.org/source/old/。
这里我们下载 openssl-1.1.1l.tar.gz:
解压下载后的OpenSSL,分别存放到两个目录,用于在Windows下编译32位和64位版本,
安装ActivePerl
由于OpenSSL的配置是使用Perl写的,因此在Windows环境上编译时需要安装一个Perl环境,官方推荐的是ActivePerl。
下载ActivePerl:http://platform.activestate.com/ActiveState/Perl-5.32/distributions
如果官网下载不方便,可以从这里下载,http://xiazai.jb51.net/202111/yuanma/ActivePerl_jb51.rar
Windows下编译64位OpenSSL动态库
假设系统已安装VS,从开始菜单找到 “x64 Native Tools Command…”,点击右键,以管理员方式打开。
注:这里不能选错,如果选错后面编译可能会出现问题。
定位到64位OpenSSL源码的根路径:
C:\Users\wang xiaohui\Desktop\OpenSSL_1_1_1_l\openssl-1.1.1l_x64\openssl-1.1.1l
执行命令:
perl Configure VC-WIN64A no-asm --prefix="C:\Users\wang xiaohui\Desktop\OpenSSL_1_1_1_l\openssl-1.1.1l_x64\output"
执行命令:
nmake
执行命令:
nmake
执行命令:
nmake install
这样就可以在--prefix=指定的目录下找到编译后的内容了,
Windows下编译32位OpenSSL动态库
整体步骤和编译64位动态库相同,不同地方有两点,
需要选择命令行工具 “x86 Native Tools Command…”
配置时需要执行下面命令
perl Configure VC-WIN32 no-asm --prefix="C:\Users\wang xiaohui\Desktop\OpenSSL_1_1_1_l\openssl-1.1.1l_x86\output"
Ubuntu 21.04 下安装OpenSSL动态库
注:确保当前环境已经安装好gcc和make等工具。
拷贝源码到路径:/home/sunny/work/build/openssl/openssl-1.1.1l
创建output目录:/home/sunny/work/build/openssl/output,并在源码根路径下执行下面命令:
./config --prefix=/home/sunny/work/build/openssl/output
执行命令:
make
执行命令:
make test
执行命令:
make install
此时在--prefix指定的目录下即可找到编译后的内容:
安装完成后直接执行bin下面的openssl命令可能会遇到如下问题:
这是因为无法找到动态链接库,可通过以下方法解决。
以root身份执行以下命令添加库引用目录:
echo "/home/sunny/work/build/openssl/output/lib" >> /etc/ld.so.conf.d/libc.conf && ldconfig
此时就不会有问题了,
加载全部内容