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

概述

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

笔记

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

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

在这里插入图片描述

@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调试参数设置

设置 - 命令参数

在命令参数输入框最右边选择下拉箭头/编辑, 会弹出编辑框, 输入方便一些.
在这里插入图片描述

在这里插入图片描述

设置 - 工作目录

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

在这里插入图片描述

设置 - 环境变量

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

在这里插入图片描述
在这里插入图片描述
需要勾选环境变量合并.
在这里插入图片描述

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

在本例中, 要拷贝的文件如下:
ca.cnf
openssl.cnf
下面这个截图是程序编译跑完了, 删掉*.obj后的样子
在这里插入图片描述

单步调试

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

备注

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

END

GitHub 加速计划 / ope / openssl
20
1
下载
传输层安全性/安全套接层及其加密库
最近提交(Master分支:2 个月前 )
fd39d1c8 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/25095) 4 个月前
ae87c488 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/25095) 4 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐