一直搞不懂x509和pkcs12以及pkcs7的关系,大牛能帮忙解释一下吗,高分相送。
x509是证书格式,但是pkcs7和Pkcs12也是证书格式,这些之间到底有什么区别和联系呢?网上搜的文章写的很泛,都是含糊其辞,还请大牛出马帮忙解释一下吧,多谢了。 --------------------编程问答-------------------- 还是看看pkcs#12,pkcs#7吧,这样一切都清楚了。pkcs#是“Personal Information Exchange Syntax”,在第一部分的“Introduction”中,提到“This standard describes a transfer syntax for personal identity information, including private keys, certificates, miscellaneous secrets, and extensions. Machines, applications, browsers, Internet kiosks, and so on, that support this standard will allow a user to import, export, and exercise a single set of personal identity information”。简单的说,它包含证书和私钥,并允许口令保护。
pkcs#7是“Cryptographic Message Syntax Standard”,在第一部分的“Scope”中,提到“This standard describes a general syntax for data that may have cryptography applied to it, such as digital signatures and digital envelopes”。简单的说,它规定了加密、签名等消息的语法格式,当然了,证书作为消息的一部分,也可以同时传递。 --------------------编程问答-------------------- 最简单的区分:是由不同组织制定的不同标准,隶属于不同的协议族——等于没说。:)。
x.509,是x500那套网络协议(好像是目录协议吧)的一个子集,专门定义了在目录访问中需要身份认证的证书的格式。后来被rfc收录3280。
PKCS#12是“个人信息交换语法”。它可以用来将x.509的证书和证书对应的私钥打包,进行交换。比如你在windows下,可以将IE里的证书连带私钥导出,并设置一个口令保护。这个pfx格式的文件,就是按照pkcs#12的格式打包的。当然pkcs#12不仅仅只是作以上用途的。它可以用来打包交换任何信息。你可以和张三李四用PKCS#12来交换私人数据,包括x.509证书和私钥。
你在交换x.509证书和私钥可以采用任何数据格式,例如PKCS#12。
PKCS#7么,举个例子,你给张三李四发了一封签名邮件,同时你将你的个人证书随邮件一起发给了张三李四,这个时候,你可以按照PKCS#7的格式来打包。
--------------------编程问答-------------------- PKI标准可以分为第一代和第二代标准[12]。
第一代PKI标准主要包括美国RSA公司的公钥加密标准(Public Key Cryptography Standards,PKCS)系列、国际电信联盟的ITU-T X.509、IETF组织的公钥基础设施X.509(Public Key Infrastructure X.509,PKIX)标准系列、无线应用协议(Wireless Application Protocol ,WAP)论坛的无线公钥基础设施(Wireless Public Key Infrastructure,WPKI)标准等。第一代PKI标准主要是基于抽象语法符号(Abstract Syntax Notation One,ASN.1)编码的,实现比较困难,这也在一定程度上影响了标准的推广。
第二代PKI标准是在2001年,由微软、VeriSign和webMethods三家公司发布了XML密钥管理规范(XML Key Management Specification,XKMS),被称为第二代PKI标准。XKMS由两部分组成:XML密钥信息服务规范(XML Key Information Service Specification,X-KISS)和XML密钥注册服务规范(XML Key Registration Service Specification,X-KRSS)。X-KISS定义了包含在XML-SIG元素中的用于验证公钥信息合法性的信任服务规范;使用X-KISS规范,XML应用程序可通过网络委托可信的第三方CA处理有关认证签名、查询、验证、绑定公钥信息等服务。X-KRSS则定义了一种可通过网络接受公钥注册、撤销、恢复的服务规范;XML应用程序建立的密钥对,可通过X-KRSS规范将公钥部分及其它有关的身份信息发给可信的第三方CA注册。X-KISS和X-KRSS规范都按照XML Schema 结构化语言定义,使用简单对象访问协议(SOAP V1.1)进行通信,其服务与消息的语法定义遵循Web服务定义语言(WSDL V1.0)。目前XKMS已成为W3C的推荐标准,并已被微软、VeriSign等公司集成于他们的产品中(微软已在ASP.net中集成了XKMS,VeriSign已发布了基于Java的信任服务集成工具包TSIK)。
CA中心普遍采用的规范是X.509[13]系列和PKCS系列,其中主要应用到了以下规范:
1.X.209(1988)
ASN.1是描述在网络上传输信息格式的标准方法。它有两部分:第一部份(ISO 8824/ITU X.208)描述信息内的数据、数据类型及序列格式,也就是数据的语法;第二部分(ISO 8825/ITU X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则。
ASN.1原来是作为X.409的一部分而开发的,后来才独立地成为一个标准。这两个协议除了在PKI体系中被应用外,还被广泛应用于通信和计算机的其他领域。
2.X.500(1993)
X.500是一套已经被国际标准化组织(ISO)接受的目录服务系统标准,它定义了一个机构如何在全局范围内共享其名字和与之相关的对象。X.500是层次性的,其中的管理域(机构、分支、部门和工作组)可以提供这些域内的用户和资源信息。在PKI体系中,X.500被用来惟一标识一个实体,该实体可以是机构、组织、个人或一台服务器。X.500被认为是实现目录服务的最佳途径,但X.500的实现需要较大的投资,并且比其他方式速度慢;而其优势具有信息模型、多功能和开放性。
3.X.509(1993)
X.509是由国际电信联盟(ITU-T)制定的数字证书标准。在X.500确保用户名称惟一性的基础上,X.509为X.500用户名称提供了通信实体的鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口。
X.509的最初版本公布于1988年。X.509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息。这一标准的最新版本是X.509 v3,它定义了包含扩展信息的数字证书。该版数字证书提供了一个扩展信息字段,用来提供更多的灵活性及特殊应用环境下所需的信息传送。
4.PKCS系列标准
PKCS是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。到1999年底,PKCS已经公布了以下标准:
PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封。
PKCS#3:定义Diffie-Hellman密钥交换协议。
PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5 从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息。
PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式。
PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息。
PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等。
PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型。
PKCS#10:描述证书请求语法。
PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备。
PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法。
PKCS#13:椭圆曲线密码体制标准。
PKCS#14:伪随机数生成标准。
PKCS#15:密码令牌信息格式标准。
5.OCSP在线证书状态协议
OCSP(Online Certificate Status Protocol)[14]是IETF颁布的用于检查数字证书在某一交易时刻是否仍然有效的标准。该标准提供给PKI用户一条方便快捷的数字证书状态查询通道,使PKI体系能够更有效、更安全地在各个领域中被广泛应用。
6.LDAP 轻量级目录访问协议
LDAP规范(RFC1487)简化了笨重的X.500目录访问协议,并且在功能性、数据表示、编码和传输方面都进行了相应的修改。1997年,LDAP第3版本成为互联网标准。目前,LDAP v3已经在PKI体系中被广泛应用于证书信息发布、CRL信息发布、CA政策以及与信息发布相关的各个方面。
--------------------编程问答-------------------- 楼上的!顶!me too! --------------------编程问答-------------------- x509 是最基本的证书格式
p#7 的标准一般主要用来做数字信封
根证书很多用.p7b的后缀
p#12 对基本的证书内容做了些扩展,
例如你用IE申请了一张证书,
当从IE里把证书到出来时,可以存成.pfx格式
的证书,里面不仅有公钥还有私钥,并且你还可以
用一个密钥保护该证书,MSCRYPTO 操作.pfx很方便。 --------------------编程问答-------------------- 都是格式。
x509,公钥证书,只有公钥。
p7,签名或加密。可以往里面塞x509,同时没有签名或加密内容。
p12,含有私钥,同时可以有公钥,有口令保护。
--------------------编程问答-------------------- p7的作用就是电子信封。 --------------------编程问答-------------------- lz要干嘛? --------------------编程问答-------------------- 这个简单啊,网上搜一下就得到答案了. --------------------编程问答-------------------- you jian cai hong --------------------编程问答-------------------- X509是基本规范
P7和P12是两个实现规范,P7是数字信封,P12是带有私钥的证书规范。 --------------------编程问答-------------------- 单纯从理论方面,楼上诸位说的很清楚了。
x509是数字证书的规范,P7和P12是两种封装形式。比如说同样的电影,有的是avi格式,有的是mpg,大概就这个意思。
P7一般是把证书分成两个文件,一个公钥一个私钥,有PEM和DER两种编码方式。PEM比较多见,就是纯文本的,P7一般是分发公钥用,看到的就是一串可见字符串,扩展名经常是.crt,.cer,.key等。DER是二进制编码。
P12是把证书压成一个文件,.pfx 。主要是考虑分发证书,私钥是要绝对保密的,不能随便以文本方式散播。所以P7格式不适合分发。.pfx中可以加密码保护,所以相对安全些。
在实践中要中,用户证书都是放在USB Key中分发,服务器证书经常还是以文件方式分发。服务器证书和用户证书,都是X509证书,就是里面的属性有区别。 --------------------编程问答-------------------- 同意楼上所说:
X509 是证书规范
PKCS#7 是消息语法 (常用于数字签名与加密)
PKCS#12 个人消息交换与打包语法 (如.PFX .P12)打包成带公钥与私钥
还有其它常用的是PKCS#10 是证书请求语法。
通过CA产生的出来的证书格式文件一般是以PFX P12格式发布给使用者(公钥与私钥),用户拿到证书后,
可以通过IE来导入或直接双击向导安装证书,此时私钥安装到系统的私有密钥库中。使用时系统会自动查找到
私钥。而最安全的方式还是使用其它USB硬件来存储,私钥将无法再从硬件锁只导出,并且支持硬件访问需要
用户的密钥才能访问到硬件内的私钥,永远保证了私钥不出硬件锁!提高了安全性,灵活性,且可以移动的方便性。如ETOKEN产品,一些硬件信息可参考 www.dztech.cn.
而相互双方通迅时使用且交换的是带公钥的证书如CER文件。
--------------------编程问答-------------------- 学习一下啊!!
补充:云计算 , 云安全