openssl3.2 - 在VS2019下源码调试openssl.exe

文章目录

    • openssl3.2 - 在VS2019下源码调试openssl.exe
    • 概述
    • 笔记
    • 先看一个用.bat调用openssl干活的实例
    • VS2019调试参数设置
    • 设置 - 命令参数
    • 设置 - 工作目录
    • 设置 - 环境变量
    • 将命令行中需要的文件拷贝到exe目录
    • 单步调试
    • 备注
    • END

openssl3.2 - 在VS2019下源码调试openssl.exe

概述

openssl.exe运行时, 是带环境变量的.
用VS2019调试时, 只带命令行参数是不行的.

笔记

进行这个实验, 前提是自己已经编译了能在vs2019下运行的openssl3.2的命令行工程.
前面已经做了笔记(openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上))

先看一个用.bat调用openssl干活的实例

openssl3.2 - 在VS2019下源码调试openssl.exe_第1张图片

@echo off
rem \file a1_create_certificate_directly.cmd

set OPENSSL=.\openssl
set OPENSSL_CONF=.\openssl.cnf
rem echo OPENSSL_CONF = %OPENSSL_CONF%

rem Root CA: create certificate directly
set CN="Test Root CA"

rem root根证书的私钥和证书要放在一个.pem中
%OPENSSL% req -config ca.cnf -x509 -nodes -keyout root_ca.pem -out root_ca.pem -newkey rsa:2048 -days 3650 > opt_log_A1.txt 2>&1

这个批处理调用openssl.exe来生成一个测试用的根证书
可以看到, 有2个环境变量必须设置 OPENSSL_CONF, CN.
如果没有这2个环境变量, 操作就会失败.

下面用VS2019调试自己编译的my_openssl_cmd.exe工程, 来做同样的事情.
不同的地方, 我们要单步调试, 找出实现这个功能的函数调用序列.

VS2019调试参数设置

设置 - 命令参数

在命令参数输入框最右边选择下拉箭头/编辑, 会弹出编辑框, 输入方便一些.
openssl3.2 - 在VS2019下源码调试openssl.exe_第2张图片

openssl3.2 - 在VS2019下源码调试openssl.exe_第3张图片

设置 - 工作目录

工作目录必须是编译出来的exe的目录, 不能是源码的工程目录, 否则会导致exe找不到命令行参数中的指定配置文件, 导致打开配置文件失败

openssl3.2 - 在VS2019下源码调试openssl.exe_第4张图片

设置 - 环境变量

必须在环境输入框的最右边选择下拉箭头/编辑, 来输入, 否则无法正确输入(因为环境变量之间使用\r\n分隔的).

openssl3.2 - 在VS2019下源码调试openssl.exe_第5张图片
openssl3.2 - 在VS2019下源码调试openssl.exe_第6张图片
需要勾选环境变量合并.
openssl3.2 - 在VS2019下源码调试openssl.exe_第7张图片

将命令行中需要的文件拷贝到exe目录

在本例中, 要拷贝的文件如下:
ca.cnf
openssl.cnf
下面这个截图是程序编译跑完了, 删掉*.obj后的样子
openssl3.2 - 在VS2019下源码调试openssl.exe_第8张图片

单步调试

这步和普通的VS2019调试没有区别.
主要是看一下, 是否命令行参数给的不对, 导致进入报错处理.
单步了一下, 程序运行正常, 正常退出.
然后去exe目录看到, 已经正常生成了root_ca.pem.

备注

从来没调试过需要环境变量的工程, 这是头一次, 汗颜.

END

你可能感兴趣的:(openSSL,openSSL)