一 、获取openssl
从官网上下载openssl,现在openssl项目组把openssl源码都放在github网站上托管。openssl源码地址:https://github.com/openssl/openssl。点击左上角的“Branch:master”选择自己的版本。我自己调试用版本是 openssl-OpenSSL_1_0_1c。
二、编译openssl
1)把 openssl-OpenSSL_1_0_1c.zip拷贝到/root目录下并解压。建立openssl安装路径(mkdir -p /usr/local/openssl)。
2)编译、安装openssl。
编译和安装openssl可以参照加压后文件夹里的INSTALL文件。里面有详细的说明。
我编译、安装openssl使用的命令如下:
./config -g –prefix=/usr/local/openssl && make && make install 。
三、gdb 调试openssl
为了方便测试我把证书放到了/usr/local/openssl/bin/server_cert目录下。
1. gdb加载测试openssl文件
在终端运行:gdb ./openssl
root@localhost:/usr/local/openssl/bin> gdb ./openssl
2.设置openssl运行参数
set args s_server -cert server_cert/server.crt -key server_cert/server.key -www -port 443
3.设置断点
例如:在 s_server.c文件中的812 行设置断点,运行命令:b s_server.c:812
4.查看断点信息
运行info b 命令
5.删除断点
使用delete命令。例如删除编号为1 的断点:delete 1 。删除所有的断点:delete 。
键盘的 “↑””↓” 箭头能回滚已使用的命令。
6.执行调试
运行run 命令
7.进入到函数里
运行s 命令
8.执行下一行代码
运行 n
9.查看代码
运行 l
10.运行到下一个断点
运行 c
11.打印变量信息
运行命令:p 变量。
回车默认执行上次的命令 。
以后会增加更多gdb命令使用说明。
推荐一本openssl SSL/TLS相关的书 :http://download.csdn.net/detail/xiangguiwang/9642295