OpenSSL证书操作

                             OpenSSL证书操作

1.目的

    (1) 掌握OpenSSL X509证书验证和获取证书信息的原理以及常用的API;

    (2) 基于OpenSSL库开发X509证书验证和证书信息查看程序。

2.步骤

  (1) 在函数tX509_Verify() 中,完成对证书的验证。

  (2) 在函数tGetX509Info() 中,获取证书的信息,包括证书版本号、证书序列号、证书颁发者信息、证书使用者信息、证书有效期和证书公钥。

  (3) 程序输出参考下图:

  

 3.结果

   (1) 对证书“guojing.cer”和“huangfeihong.cer”进行了验证,包括证书有效期、证书颁发者签名、证书链和CRL验证;对证书进行解析,显示了证书的版本、序列号、颁发者、使用者、公钥、有效期等信息。

   (2) 实验代码:

#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<openssl/evp.h>
#include<openssl/x509.h>
void tX509_Verify()
{
    unsigned char usrCertificate1[4096];
	   unsigned long usrCertificate1Len;
    unsigned char usrCertificate2[4096];
    unsigned long usrCertificate2Len;
    unsigned char derCrl[4096];
unsigned long derCrlLen;
    unsigned char derRootCert[4096];
	   unsigned long derRootCertLen;
int rv;

	X509_STORE_CTX *ctx=NULL;
	X509 *usrCert1=NULL;
	X509 *usrCert2=NULL;
	X509 *caCert=NULL;
 X509 *rootCert=NULL;</span>
	<span style="font-size:18px;">X509_CRL *Crl=NULL;
	STACK_OF(X509)*caCertStack=NULL;
	X509_STORE *rootCertStore =NULL;
	int j=0;
 const unsigned char *pTmp=NULL;
	FILE *fp;

	fp=fopen("root.cer","rb");
	if(fp==NULL)
	{
		printf("open file\"root.cer\"err.\n");
		return;
	}
	derRootCertLen=fread(derRootCert,1,4096,fp);
	fclose(fp);

    fp=fopen("crl.crl","rb");
	if(fp==NULL)
	{
		printf("open file\"crl.crl\"err.\n");
		return;
	}
	derCrlLen=fread(derCrl,1,4096,fp);
	fclose(fp);

	fp=fopen("guojing.cer","rb");
	if(fp==NULL)
	{
		printf("open file\"guojing.cer\"err.\n");
		return;
	}
	usrCertificate1Len=fread(usrCertificate1,1,4096,fp);
	fclose(fp);

	fp=fop
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
OpenSSL是一个开放源代码的加密工具包,可以用来进行SSL/TLS协议的实现。在使用OpenSSL操作证书链时,可以采取以下步骤: 1.生成私钥和证书请求:首先,使用OpenSSL生成一个私钥和一个证书请求(CSR)。私钥用来签署证书,而CSR包含了申请者的公钥信息。 2.自签名证书:接下来,使用生成的私钥和CSR生成一个自签名证书。自签名证书可以用于测试或者临时环境,但在生产环境中,应该使用由受信任的第三方机构签名的证书。 3.签名证书:如果要获得第三方机构签名的证书,需要将CSR发送给证书颁发机构(CA)。CA会对CSR进行验证,并使用CA的私钥签名生成一个证书。这个证书可以用来在客户端与服务器之间建立信任。 4.构建证书链:证书链是由证书和根证书构成的一条验证路径。在OpenSSL中,可以通过将证书和根证书连接在一起来构建证书链。同时,还需要将每个证书保存为单独的文件,以便于使用。 5.验证证书链:在服务端和客户端之间建立连接时,服务器需要将证书链发送给客户端。客户端使用CA的公钥来验证证书链的有效性。如果证书链中的任何一个证书无效或不受信任,连接将被中断。 通过以上步骤,我们可以使用OpenSSL操作证书链。这样可以确保在SSL/TLS连接中建立起合法且可信的通信路径,保证通信的安全性和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值