当前位置: 首页 > news >正文

openssl3.2 - linux脚本(.sh)调用openssl命令行参数的简单确认方法

文章目录

    • openssl3.2 - linux脚本(.sh)调用openssl命令行参数的简单确认方法
    • 概述
    • 笔记
    • 修改openssl实现的前置条件
    • 修改debian12.4下编译好的openssl实现, 将入口参数记录下来
    • 测试效果
    • 备注
    • END

openssl3.2 - linux脚本(.sh)调用openssl命令行参数的简单确认方法

概述

在琢磨官方工程中的/test/certs中的2个脚本(setup.sh, mkcert.sh)
这2个脚本有不到500个openssl命令行调用, 应该是openssl内部测试证书操作的脚本.
确定这2个脚本是好东西(将证书操作一网打尽, 弄清了这2个脚本, 就没有不会的证书操作了).

但是脚本调用, 到了调用openssl时, 参数拼接很烦人, 我只想看具体到了openssl的可执行文件, 到底给了啥命令行参数.
有一些参数是用管道给的, 用stdin给的一个buffer代表一个参数文件, 这很烦啊.
官方给用户的正式例子, 都是用 in 参数, 然后给一个文件名. 这样多清爽.
.sh又不熟, 想将.sh改成可以传文件名给openssl的例子, 可能要花多一些时间.
一直在琢磨是否有更好的方法能确定最终的openssl命令行参数, 突然想到, 为啥不直接将openssl实现给改了, 在程序入口, 写几句日志, 将命令行参数记录下来, 这不一了百了啊. 研究啥.sh怎么写啊.
只要确定给了啥命令行参数, 那就好办了.
我已经编译好了在windows下可用的VS2019的openssl.exe的工程, 那就在自己工程中, 舒舒服服的调试好了(openssl3.2 - 自己构建openssl.exe的VS工程(在编译完的源码版本上), openssl3.2 - 在VS2019下源码调试openssl.exe).

笔记

修改openssl实现的前置条件

已经在debian12.4下, 配置, 编译, 测试, 安装都通过了.
且配置了debian12.4, 让本地普通目录中运行openssl命令行已经好使(openssl3.2 - 编译).

修改debian12.4下编译好的openssl实现, 将入口参数记录下来

参照我重建的win版openssl.exe工程, 可知 main()函数在openssl.c
去debian12.4下原版源码目录中确定是./apps/openssl.c

修改如下, 只在程序入口处, 加了一段日志文件的操作, 将openssl可执行文件的命令行参数附加到日志文件.

static char *help_argv[] = { "help", NULL };
static char *version_argv[] = { "version", NULL };int main(int argc, char *argv[])
{FUNCTION f, *fp;LHASH_OF(FUNCTION) *prog = NULL;char *pname;const char *fname;ARGS arg;int global_help = 0;int global_version = 0;int ret = 0;int i = 0;FILE* pfLog = NULL;// 将入参全部写入文件待调试, 去看.sh太繁琐了if (1){pfLog = fopen("/home/lostspeed/openssl/my_openssl_log.txt", "a");if (NULL != pfLog){for (i = 0; i < argc; i++){fwrite(argv[i], sizeof(char), strlen(argv[i]), pfLog);// 每个参数中间加一个空格fwrite(" ", sizeof(char), 1, pfLog);}// 追加完一次openssl命令行调用, 换一行fwrite("\r\n", sizeof(char), 2, pfLog);fclose(pfLog);pfLog = NULL;}}arg.argv = NULL;arg.size = 0;

在正常的工程中, 只进行make, make install

测试效果

在普通目录中运行了2个命令

openssl version -a 
openssl --help

查看自己指定的位置确实有日志文件.

lostspeed@debian12d4x64:~/openssl$ pwd
/home/lostspeed/openssl
lostspeed@debian12d4x64:~/openssl$ ls -l
总计 488136
-rw-r--r--  1 lostspeed lostspeed        38  1月20日 22:29 my_openssl_log.txt
drwxr-xr-x 26 lostspeed lostspeed      4096  1月20日 21:13 openssl-3.2.0_debian
-rw-r--r--  1 lostspeed lostspeed 482136966  1月20日 21:17 openssl-3.2.0_debian.tar.gz
-rwxr-xr-x  1 root      root       17698352  1月20日 13:55 openssl-3.2.0.tar.gz

查看此日志文件

lostspeed@debian12d4x64:~/openssl$ cat ./my_openssl_log.txt 
openssl version -a 
openssl --help 
lostspeed@debian12d4x64:~/openssl$ 

备注

这方法好使.
那我下一步就将setup.sh改成每次只执行一个命令的版本. e.g. setup1.sh, setup2.sh.
知道了具体的命令行操作, 那么就可以去win版的openssl.exe工程去查, 将stdin给出的参数文件流内容, 改为可以落地的参数和文件名.
那我也不用去改debian12.4下的那2个.sh脚本了, 调试强度一下子就降低好多.

END

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【迅搜19】扩展(二)TNTSearch和JiebaPHP方案
  • 5G_射频测试_参考规范(一)
  • ssh:connect to host github.com port 22: Connection timed out
  • pyspark笔记:over
  • Halcon 边缘提取
  • 【JavaWeb】XML Tomcat10 HTTP
  • 计算机组成原理 第一弹
  • [GN] Vue3.2 快速上手 ---- 核心语法2
  • flask 与小程序 菜品详情和分享功能
  • 全球光伏知名企业-晶科能源联合泛微采知连,建立文控管理平台
  • C#基础:通过QQ邮件发送验证码到指定邮箱
  • 运动的解析:从机械运动到自由落体,探索物体运动的基本规律与数学描述
  • php基础学习之代码框架
  • 【JavaEE Spring】SpringBoot 日志
  • python-分享篇-爱心
  • angular组件开发
  • co模块的前端实现
  • CSS盒模型深入
  • JavaScript中的对象个人分享
  • k个最大的数及变种小结
  • SegmentFault 2015 Top Rank
  • spring + angular 实现导出excel
  • 从伪并行的 Python 多线程说起
  • 汉诺塔算法
  • 开源SQL-on-Hadoop系统一览
  • 想使用 MongoDB ,你应该了解这8个方面!
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • #AngularJS#$sce.trustAsResourceUrl
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (javascript)再说document.body.scrollTop的使用问题
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (离散数学)逻辑连接词
  • (六)DockerCompose安装与配置
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)EOS中账户、钱包和密钥的关系
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)Sql Server 保留几位小数的两种做法
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • ***利用Ms05002溢出找“肉鸡
  • ***原理与防范
  • .htaccess配置常用技巧
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net 发送邮件
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 使用 XPath 来读写 XML 文件
  • .Net的DataSet直接与SQL2005交互
  • .net知识和学习方法系列(二十一)CLR-枚举
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [.net] 如何在mail的加入正文显示图片