数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authorit y)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权 中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一 个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有 效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循 ITUT X.509国际标准
  一个标准的X.509数字证书包含以下一些内容:
  证书的版本信息;
  证书的序列号,每个证书都有一个唯一的证书序列号;
  证书所使用的签名算法;
  证书的发行机构名称,命名规则一般采用X.500格式;
  证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950-2049;
  证书所有人的名称,命名规则一般采用X.500格式;
  证书所有人的公开密钥;
  证书发行者对证书的签名

代码如下,分析见源码

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif#include <stdio.h>
#include <windows.h>
#include <wincrypt.h>
#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
void HandleError(char *s);void main(void)
{//-------------------------------------------------------------------// 变量申明与初始化HCERTSTORE      hSystemStore;PCCERT_CONTEXT  pTargetCert=NULL;PCERT_INFO      pTargetCertInfo; char            szSubjectName[] = "China-wuhan-ruanou"; // 证书客体名称,应保证此证书在证书库中有效//-------------------------------------------------------------------// 打开系统证书库if(hSystemStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,  // 系统证书库0,                       // 编码类型,这里不需要NULL,                    // 使用默认的CSP CERT_SYSTEM_STORE_CURRENT_USER,//系统库存储位置L"MY"))                        // 系统库名称{printf("打开系统证书库成功. MY 证书库已经打开. \n");}else{HandleError( "打开根证书库出错.");}//-------------------------------------------------------------------// 在系统证书库中查询证书if(pTargetCert = CertFindCertificateInStore(hSystemStore,           // 证书库句柄,系统证书库MY_ENCODING_TYPE,       // 编码类型0,                      // 不需要设置标志位 CERT_FIND_SUBJECT_STR_A,// 查找标准为:证书客体名称为szSubjectNameszSubjectName,          // 证书客体名称pTargetCert))           // 上次查找到的证书, 第一次查找,从证书库开始位置查找{printf("找到了此证书. \n");}else{HandleError("未能找到所需的证书.");}//-------------------------------------------------------------------// 证书有效期验证pTargetCertInfo = pTargetCert->pCertInfo;    switch(CertVerifyTimeValidity(NULL,               // 使用当前时间pTargetCertInfo))   // 欲验证有效期的证书指针{case -1 :{printf("证书无效. \n");break;}case 1:{printf("证书已过期. \n");break;}case 0:{printf("证书的时间有效. \n");break;}};//-----------------

VC++网络安全编程范例(1)--数字证书有效期验证相关推荐

  1. VC++网络安全编程范例(2)-创建自签名证书

    数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密.解密.每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名:同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享, ...

  2. vc++网络安全编程范例(19)实现数字信封打包与拆解

    数字信封是将对称密钥通过非对称加密(即:有公钥和私钥两个)的结果分发对称密钥的方法. PKCS#7中将数字信封作为术语进行定义,而在正文中对进行了如下解释:数字信封包含被加密的内容和被加密的用于加密该 ...

  3. vc++网络安全编程范例(14)-openssl bio编程

    OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的. 作为一个基于密码学的安全开发包,OpenS ...

  4. java对数字证书的验证_JAVA对数字证书的常用操作

    一:需要包含的包 import java.security.*; import java.io.*; import java.util.*; import java.security.*; impor ...

  5. 非对称加密与数字证书

    文章目录 1 非对称加密 2 数字签名 3 数字证书 4 数字签名和数字证书的区别 5 CA 认证中心如何保证权威性 6 HTTPS 协议 7 HTTPS 与 SSL 8 为什么不一直使用HTTPS ...

  6. 数字签名和数字证书使用详解

    目录 1.数字签名 (1)数字签名的应用场景 (2)数字签名的实现原理 (3)如何进行数字签名和验证 (4)使用数字签名的优点和缺点 2.数字证书 (1)如何对数字证书进行颁发和管理 (2)颁发数字证 ...

  7. 数字签名和数字证书详解

    原文件地址:http://www.tuicool.com/articles/7buueeQ 密钥分为两种:对称密钥和非对象密钥 对称密钥算法:DES 3DES AES,加密算法快 非对称密钥算法:RA ...

  8. Java加密与解密的艺术~数字证书详解

    数字证书具备常规加密/解密必要的信息,包含签名算法,可用于网络数据加密/解密交互,标识网络用户(计算机)身份.数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载体.依靠数字证 ...

  9. https:浏览器如何验证数字证书

    浏览器和服务器建立https连接的过程中,浏览器首先会向服务器请求数字证书,之后浏览器要做的第一件事情就是验证数字证书: 验证数字证书的有效期 验证数字证书是否被吊销 验证数字证书是否是合法CA机构颁 ...

最新文章

  1. 【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试
  2. JDBC有这一篇就够了(万字JDBC附代码详解)
  3. MacBook 如何通过命令终端进入 U 盘内的目录
  4. 大数据之-Hadoop3.x_Yarn_基础架构---大数据之hadoop3.x工作笔记0141
  5. Monkey稳定性测试,多少还是要了解一下的(上)
  6. 选择性搜索(selective search)+opencv实现
  7. HDU3782 xxx定律【数学计算+水题】
  8. SLAM学习笔记 - ORB_SLAM2源码运行及分析
  9. 2021最新大厂面试题集锦
  10. java中==与equals的区别及理解_Java开发中常量池的理解与归纳
  11. CSDN账号注销的问题:手机号注册的CSDN号是可以注销的
  12. 六年级计算机应用计划,小学三到六年级信息技术教学计划及进度表.doc
  13. 基于spss的偏相关分析(partial correlation analysis)
  14. 【Pix4d精品教程】打开Pix4DMapper时提示Pix4DMapper.exe已停止工作的完全解决办法
  15. win10系统优化与防范策略
  16. 计算机组成原理————寄存器寻址方式大总结
  17. Carplay车载语音通讯测试(Vehicle Communication Terminals Test)
  18. 显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)
  19. 计算机视觉 响应_视觉响应式布局的自动化测试
  20. ida 动态调试so库 (连接夜神模拟器)

热门文章

  1. python如何群控手机_python调用adb脚本来实现群控安卓手机初探
  2. 工业机器人:机电IT融合破局
  3. Dapper.Contrib
  4. C#ORM框架Dapper封装
  5. linux蓝牙服务关闭,使用linux的hciconfig命令配置蓝牙设备
  6. 外行怎么快速林java_我自学编程,只为月薪过万,就这么简单!(外行也可看)...
  7. MyZip Pro for Mac(专业解压缩工具)
  8. 良心推荐,一款PDF转JPG图片的免费在线工具
  9. 17joys用户管理 添加用户
  10. Ubuntu18.04 中的文件管理器