调用openssl api函数C代码生成CSR文件

概述:

本文基于本人之前的一篇文章的延伸,调用openssl api函数C代码生成证书:https://blog.csdn.net/shenweihong/article/details/125140149,
本文使用的公钥类型RSA,签名私钥类型也是RSA

软件环境:

openssl:版本1.1.1k,编译好windows x86静态库
visual stdio:版本2010
Keystore Explorer:版本5.5.2,用于查看确认证书的

CSR组成:

如下图为用Keystore Explorer查看csr文件截图:

在这里插入图片描述

Formate:固定的,PKCS10的格式
Subject:主题名,后面的代码参数设置
Public Key:公钥,后面的代码参数设置
Signature Algorithm:签名算法,后面的代码参数设置

生成代码:

#pragma comment(lib, "Crypt32.lib")
#pragma comment(lib, "compile_win_x86_lib\\lib\\libcrypto.lib")
#pragma comment(lib, "compile_win_x86_lib\\lib\\libssl.lib")
#include "openssl/rsa.h"
#include "openssl/pem.h"
#include "openssl/x509v3.h"void GenX509Req(char* subjectCN, char* subjectOU, char* subjectO, char* subjectL, char* subjectST, char* subjectC,char* cerPubE, char* cerPubN, char* signE, char* signN, char* signD, char* fileName)
{X509_REQ *req = NULL;X509_NAME* x509Name = NULL;RSA* rsaPubCtx = NULL;RSA* rsaSignCtx = NULL;EVP_PKEY* pPubKey = NULL;EVP_PKEY* pSignKey = NULL;BIGNUM* bigE = NULL;BIGNUM* bigN = NULL;BIGNUM* bigD = NULL;FILE* pFile = NULL;rsaPubCtx = RSA_new();pPubKey = EVP_PKEY_new();bigE = BN_new();bigN = BN_new();BN_hex2bn(&bigE, cerPubE);BN_hex2bn(&bigN, cerPubN);RSA_set0_key(rsaPubCtx, bigN, bigE, NULL);EVP_PKEY_set1_RSA(pPubKey, rsaPubCtx);rsaSignCtx = RSA_new();pSignKey = EVP_PKEY_new();bigE = BN_new();bigN = BN_new();bigD = BN_new();BN_hex2bn(&bigE, signE);BN_hex2bn(&bigN, signN);BN_hex2bn(&bigD, signD);RSA_set0_key(rsaSignCtx, bigN, bigE, bigD);EVP_PKEY_set1_RSA(pSignKey, rsaSignCtx);req = X509_REQ_new();x509Name = X509_REQ_get_subject_name(req);X509_NAME_add_entry_by_txt(x509Name, "CN", MBSTRING_ASC, (unsigned char*)subjectCN, -1, -1, 0);X509_NAME_add_entry_by_txt(x509Name, "OU", MBSTRING_ASC, (unsigned char*)subjectOU, -1, -1, 0);X509_NAME_add_entry_by_txt(x509Name, "O", MBSTRING_ASC, (unsigned char*)subjectO, -1, -1, 0);X509_NAME_add_entry_by_txt(x509Name, "L", MBSTRING_ASC, (unsigned char*)subjectL, -1, -1, 0);X509_NAME_add_entry_by_txt(x509Name, "ST", MBSTRING_ASC, (unsigned char*)subjectST, -1, -1, 0);X509_NAME_add_entry_by_txt(x509Name, "C", MBSTRING_ASC, (unsigned char*)subjectC, -1, -1, 0);X509_REQ_set_pubkey(req, pPubKey);X509_REQ_sign(req, pSignKey, EVP_sha256());pFile = fopen(fileName, "w");PEM_write_X509_REQ(pFile, req);fclose(pFile);
}

测试代码:


void main()
{/*pub:N:D394BA47C0AFDA2CDB41E5B32B815934955F3FCF8FBCAE8D82D6C482C72F7062280F8723F17F6D101EE2133F27FE0C417EA3A3ADCAEAEF3439AF74D49F3BA68B90CFA7602B16B4CEFDA865555F681AD0DEBBBFC1FA03B908CF5BB802357AE9FB5A873F2764747431F7885250016AD16864C9BB1F2A8FEC0E32CBF96376445F63D896C3DEFBC81A01E5A630E05127A2F30A75F9C8336A19868FFDA65AC3D64A2126F53233734C0DFAD5A2C7E9BA1EBD65DBD34C9F3BF86F33619983FF9B945C22695E940A8C157DAB39D3C795606FCF9BB727A7F67E7465DE428CE450620FEA71BF98AC67B4F20133B8C69C978CD6CE4B5E775C9DF65DC1712B42F99E76CDBDD7D:047DA0A28B3D704509765198C6F09CE317D488B73016D221A0C84C2D766AD458D0FEDB6070ECC274D822F6439DE6AF7DE86132C52A8C67FD54C81B93B3B981646EF3695B0A2F16315A82EB7BAF65B743FDA64080AE7CCBBD9B21183BBBC4DB1881A86337C3D310F04A8FB3278D9025D7B063F3BBCA9C796727BEDA9138DE64A3E0FD0B10BA1E59A016DBEDB5596120B96B9BDA39362D25C1607C6879A1ECA5518A828392616EDFF79ACCBF325313835E14F1F78CF00A7093768CCE22B44FF5F1D37C35B8191A144C7F6CDDBD9322236B134189B4A93F635AF8901A0679D45937753E15F656C70D14FCBD37D2E7AF2B11AD83AD8A3F136448BAF72BCE8D9F0759*//*sign:N:A7A75DED6CE80AF530BCF58C69262E722400C0AB82CCE92241C937E1F8F60E216441FE63E4468141237914368CA12F790E3AD9D9FAB109DE9842A24A97C18417CB1AB00D32EB9E2242682D29C873AD04E2898C1299D30015D1F4C68B2B7402F1D8D020A34085680D95C9F4557B145FDAA63115659B3ECA1C2CB5F5FF8A4BDA1364EF70589FDD46D5E50FA08DFB66DD4FD1C751F1F22B91A13AC4C10639AC5A067C0A86D67D2B6AF9B47DE60704699BB6F59C87D2B305760B9366EAA995602E84C78BCCCD85BB59F2C8A5421415E06767C1A7F73FBFE44ED0987BE1283719D20844D9AA1D86DAB2337F80B333ABDFDD490586342915CF542796E945D22A0EDCFFD:73D3583BF89A933F73ED8802FA7E0B6685E313392AC3A0692F63F1BCA7806EA0B92032BD166F734AEA53F31800AE371AFE2EC0652D21F47C995AA7BEBAFB51E412489CCA719C808290B86243549E3E317AC4A6460F89CBAC4782414CD2B772755D61E4BA848FE6244490E2C1CFA772D59F2D97E7BB8A749D64724DC2BEEBCA7BAF64B4C59B1FE9680BEF66A6469CD9544EEDCB8B34E60F06082951D5ABCA95441E00D5984879E6B774D7A63E0AA160EC9C2AA5E3FA0948C8296E500F406EAF74EBDDC31D738565C4362330D28389BCA52E72964A7AE4FA21655D286FFEB50020D079B273FA7D90D3D8B2AFA9958499D79D993BE14AD5692DA70607411BA3C279*/GenX509Req("11", "22", "33", "44", "55", "66","010001","D394BA47C0AFDA2CDB41E5B32B815934955F3FCF8FBCAE8D82D6C482C72F7062280F8723F17F6D101EE2133F27FE0C417EA3A3ADCAEAEF3439AF74D49F3BA68B90CFA7602B16B4CEFDA865555F681AD0DEBBBFC1FA03B908CF5BB802357AE9FB5A873F2764747431F7885250016AD16864C9BB1F2A8FEC0E32CBF96376445F63D896C3DEFBC81A01E5A630E05127A2F30A75F9C8336A19868FFDA65AC3D64A2126F53233734C0DFAD5A2C7E9BA1EBD65DBD34C9F3BF86F33619983FF9B945C22695E940A8C157DAB39D3C795606FCF9BB727A7F67E7465DE428CE450620FEA71BF98AC67B4F20133B8C69C978CD6CE4B5E775C9DF65DC1712B42F99E76CDBDD7","010001","A7A75DED6CE80AF530BCF58C69262E722400C0AB82CCE92241C937E1F8F60E216441FE63E4468141237914368CA12F790E3AD9D9FAB109DE9842A24A97C18417CB1AB00D32EB9E2242682D29C873AD04E2898C1299D30015D1F4C68B2B7402F1D8D020A34085680D95C9F4557B145FDAA63115659B3ECA1C2CB5F5FF8A4BDA1364EF70589FDD46D5E50FA08DFB66DD4FD1C751F1F22B91A13AC4C10639AC5A067C0A86D67D2B6AF9B47DE60704699BB6F59C87D2B305760B9366EAA995602E84C78BCCCD85BB59F2C8A5421415E06767C1A7F73FBFE44ED0987BE1283719D20844D9AA1D86DAB2337F80B333ABDFDD490586342915CF542796E945D22A0EDCFF","73D3583BF89A933F73ED8802FA7E0B6685E313392AC3A0692F63F1BCA7806EA0B92032BD166F734AEA53F31800AE371AFE2EC0652D21F47C995AA7BEBAFB51E412489CCA719C808290B86243549E3E317AC4A6460F89CBAC4782414CD2B772755D61E4BA848FE6244490E2C1CFA772D59F2D97E7BB8A749D64724DC2BEEBCA7BAF64B4C59B1FE9680BEF66A6469CD9544EEDCB8B34E60F06082951D5ABCA95441E00D5984879E6B774D7A63E0AA160EC9C2AA5E3FA0948C8296E500F406EAF74EBDDC31D738565C4362330D28389BCA52E72964A7AE4FA21655D286FFEB50020D079B273FA7D90D3D8B2AFA9958499D79D993BE14AD5692DA70607411BA3C279","123456.cer");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/299403.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据通信网络基础华为ICT网络赛道

目录 前言: 1.网络与通信 2.网络类型与网络拓扑 3.网络工程与网络工程师 前言: 数据通信网络基础是通信领域的基本概念,涉及数据传输、路由交换、网络安全等方面的知识。华为ICT网络赛道则是华为公司提出的一种技术路径,旨在通…

大模型做实体识别任务的原理

1、背景 命名实体识别(named entity recognition,NER):通常是一个序列标注的任务,常见的模型框架有:LSTM-CRF、BERTBILSTMCRF等,该种任务通常被成为flat NER即:每一个token只分配一…

20231225使用亿佰特的蓝牙模块dongle协议分析仪E104-2G4U04A抓取BLE广播数据

20231225使用亿佰特的蓝牙模块dongle协议分析仪E104-2G4U04A抓取BLE广播数据 结论:硬件蓝牙分析仪 不一定比 手机端的APK的效果好! 亿佰特E104-2G4U04A需要3片【单通道】,电脑端的UI为全英文的。 BLE-AnalyzerPro WCH升级版BLE-PRO蓝牙分析仪…

Arduino驱动BME680四合一传感器模块

目录 一、简介二、技术参数三、使用方法四、实验现象 一、简介 点击图片购买 GYMCU680 是一款低成本空气检测模块,工作电压 3-5v 功耗小,体积小。其工作原理,是通过 MCU 读取 BME680传感器数据,经过算法得到,温湿度&am…

Error loading MySQLdb module.Did you install mysqlclient?报错解决方法

出现报错django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient? 这个错误意味着你的Django项目在尝试使用MySQL数据库时找不到MySQLdb模块。 首先检查自己有没有安装mysqlclient 运行以下命令来安装mysqlclient&…

Spring之国际化:i18n

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

玩转大数据22:常见的关联规则挖掘算法

引言 关联规则挖掘是数据挖掘中的一种重要技术,主要用于发现数据集中项之间的有趣关系。关联规则挖掘在许多领域都有广泛的应用,如市场篮子分析、推荐系统等。常见的关联规则挖掘算法包括Apriori算法和FP-Growth算法。 一、Apriori算法 关联规则挖掘是…

【鸿蒙应用ArkTS开发系列】- 沉浸式状态栏实现

文章目录 一、前言二、封装沉浸式状态栏管理类1、创建Demo工程2、封装状态栏管理类 三、编写页面实现沉浸式状态栏效果1、存储windowStage实例2、Page页面中实现沉浸式开启关闭功能2.1、开启沉浸式状态栏2.2、设置标题栏偏移量 一、前言 在应用开发中,页面跟状态栏…

防止synplify优化ILA模块或信号

摘要:synplify综合的时候会优化掉没有用到的信号或者模块,为防止synplify优化ILA或信号特记录此方法; 我使用的是synplify_pro compile完成之后,可以打开synplify图形化的网表 1.防止synplify优化wire信号 在vivado里面一般可以…

多重断言插件之pytest-assume的简单使用

背景: pytest-assume是Pytest框架的一个扩展,它允许在单个测试用例中多次断言。通常情况下,当一个断言失败时,测试会立即停止执行,而pytest-assume允许我 们继续执行剩余的断言,以便查看更多的失败信息。…

opencv入门到精通——形态学转换

目录 目标 理论 1. 侵蚀 2. 扩张 3. 开运算 4. 闭运算 5. 形态学梯度 6. 顶帽 7. 黑帽 结构元素 目标 在这一章当中, 我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等。我们将看到不同的功能&…

浙江大唐乌沙山电厂选择ZStack Cloud打造新一代云基础设施

浙江大唐乌沙山电厂选择云轴科技ZStack Cloud云平台为其提供高性能、高可用的云主机、云存储和云网络,构建了简单、稳定、安全、高效的云基础设施;通过ZStackCloud为其提供可视化服务编排、多租户自服务等模块,帮助电厂提高IT资源利用率&…