php获取x509证书信息,创建X509证书,并获取证书密钥的一点研究

本文介绍了X.509数字证书标准,包括其在SSL、SET等安全协议中的应用。作者探讨了如何在PHP环境中创建X509证书,特别是通过makecert工具和编程方式,以及如何获取证书的私钥,提出了两种方法:从密钥容器中获取和重置密钥对。文章适合对PHP证书操作感兴趣的读者。
摘要由CSDN通过智能技术生成

作者:肖波

背景

服务器SSL数字证书和客户端单位数字证书的格式遵循X.509标准。X.509是由国际电信联盟(ITU-T)制定的数字证书标准。为了提供公用网络用户目录信息服务,ITU于1988年制定了X.500系列标准。其中X.500和X.509是安全认证系统的核心,X.500定义了一种区别命名规则,以命名树来确保用户名称的唯一性;X.509则为X.500用户名称提供了通信实体鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口,X.509称之为证书。

X.509给出的鉴别框架是一种基于公开密钥体制的鉴别业务密钥管理。一个用户有两把密钥:一把是用户的专用密钥(简称为:私钥),另一把是其他用户都可得到和利用的公共密钥(简称为:公钥)。用户可用常规加密算法(如DES)为信息加密,然后再用接收者的公共密钥对DES进行加密并将之附于信息之上,这样接收者可用对应的专用密钥打开DES密锁,并对信息解密。该鉴别框架允许用户将其公开密钥存放在CA的目录项中。一个用户如果想与另一个用户交换秘密信息,就可以直接从对方的目录项中获得相应的公开密钥,用于各种安全服务。

最初的X.509版本公布于1988年,版本3的建议稿1994年公布,在1995年获得批准。本质上,X.509证书由用户公共密钥与用户标识符组成,此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等。用户可通过安全可靠的方式向CA提供其公共密钥以获得证书,这样用户就可公开其证书,而任何需要此用户的公共密钥者都能得到此证书,并通过CA检验密钥是否正确。这一标准的最新版本-- X.509版本3是针对包含扩展信息的数字证书,提供一个扩展字段,以提供更多的灵活性及特殊环境下所需的信息传送。

为了进行身份认证,X.509标准及公共密钥加密系统提供了一个称作数字签名的方案。用户可生成一段信息及其摘要(亦称作信息“指纹”)。用户用专用密钥对摘要加密以形成签名,接收者用发送者的公共密钥对签名解密,并将之与收到的信息“指纹”进行比较,以确定其真实性。

目前,X.509标准已在编排公共密钥格式方面被广泛接受,已用于许多网络安全应用程序,其中包括IP安全(Ipsec)、安全套接层(SSL)、安全电子交易(SET)、安全多媒体INTERNET邮件扩展(S/MIME)等。

创建X509证书

创建X509证书方法较多,在Windows环境下大致总结了几中办法,

1)通过CA获取证书,

2)通过微软提供的makecert工具得到测试证书

3)编程的方法创建,.Net提供了X509Certificate2类,该类可以用于创建证书,但只能从RawData中创建,创建后无法修改除FriendlyName以外的任何属性。

我在互联网上找了很久,始终没有找到完全通过程序创建自定义的证书的方法(-_-!同感)。后来想了一个折中办法,就是用程序调用makecert.e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值