**
1. 环境
Linux 5.19.0-14-generic 22.04.1-Ubuntu
2. 所需工具
gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) cmake version 3.22.1
3. 步骤
3.1 获取openssl源码
方法可以git clone获得源码,或者直接去GitHub上下载压缩包,GitHub网址:https://github.com/openssl/openssl
使用git clone方法:
lan@lan:~/openssl/code/openssl$ git clone git@github.com:openssl/openssl.git
3.2 源码的安装三步骤:配置,编译,和安装
安装分为动态库安装和静态库安装
静态库安装:
3.2.1 配置
lan@lan:~/openssl/code/openssl$ ./config --prefix=/usr/local --openssldir=/usr/local/ssl
–prefix指定安装路径; --openssldir配置参数路径,是在–prefix指定路径下的子目录。
注:–prefix后的路径可以指定自己新建的文件目录,比如–prefix=/usr/local/openssl,这样所有文件都会在/usr/local/openssl路径下,如果想删除时比较好操作。
执行完后:
3.2.2 编译和安装
lan@lan:~/openssl/code/openssl$ make && sudo make install
动态库安装:
基本步骤同上三步骤:配置,编译,安装
lan@lan:~/openssl/code/openssl$ ./config -d shared --prefix=/usr/local --openssldir=/usr/local/ssl
lan@lan:~/openssl/code/openssl$ make clean
lan@lan:~/openssl/code/openssl$ make && sudo make install
还需要加入动态链接库路径
lan@lan:~/openssl/code/openssl$ su - root
root@lan:~# echo "/usr/local/lib" >> /etc/ld.so.conf
root@lan:~# cat /etc/ld.so.conf
ld.so.conf内容:
include /etc/ld.so.conf.d/*.conf
/usr/local/lib
root@lan:~# ldconfig -v
4. 检查版本
lan@lan:~/openssl/testdata$ openssl version
如果你安装了两个版本且出现not found情况:
执行:
lan@lan:/usr/local/lib64$ export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
这是将/usr/local/lib添加到环境变量中,确保能使用该路径下的库,再检查openssl版本:
lan@lan:/usr/local/lib64$ openssl version -a
这是临时修改环境,只针对当前会话有效,如果要永久修改,需要修改 ~/.bashrc 或者 ~/.bash_profile文件,保存、退出
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
执行生效source .bashrc或者 source .bash_profile文件
5. Debug
使用gdb来debug openssl demo
5.1 选择demo下的cipher,也可以其他文件夹
cd /home/lan/openssl/code/openssl/demos/cipher
5.2 编译:
demo下面的每个文件夹下的测试源码,都可独立编译
lan@lan:~/openssl/code/openssl/demos/cipher$ make clean && make
5.3 运行
lan@lan:~/openssl/code/openssl/demos/cipher$ ./aesgcm
5.4 使用gdb debug
lan@lan:~/openssl/code/openssl/demos/cipher$ gdb aesgcm
就可以按需使用gdb 命令来debug了