数字证书格式
常见数字证书类型

常见数字证书类型1 数字证书1.1 概述 数字证书就是互联⽹通讯中标志通讯各⽅⾝份信息的⼀串数字,提供了⼀种在Internet上验证通信实体⾝份的⽅式,数字证书不是,⽽是⾝份认证机构盖在数字⾝份证上的⼀个章或印(或者说加在数字⾝份证上的⼀个签名)。
它是由权威机构——CA机构,⼜称为证书授权(Certificate Authority)中⼼发⾏的,⼈们可以在⽹上⽤它来识别对⽅的⾝份。
2 证书格式2.1 证书格式分类分为2⼤类:密钥库(含私钥,也可能有公钥)和公钥证书(仅含公钥)2.1.1 密钥库⽂件格式【Keystore】格式 : JKS扩展名 : .jks/.ks描述 : 【Java Keystore】密钥库的Java实现版本,provider为SUN特点 : 密钥库和私钥⽤不同的密码进⾏保护格式 : JCEKS扩展名 : .jce描述 : 【JCE Keystore】密钥库的JCE实现版本,provider为SUN JCE特点 : 相对于JKS安全级别更⾼,保护Keystore私钥时采⽤TripleDES格式 : PKCS12扩展名 : .p12/.pfx描述 : 【PKCS #12】个⼈信息交换语法标准特点 : 1、包含私钥、公钥及其证书2、密钥库和私钥⽤相同密码进⾏保护格式 : BKS扩展名 : .bks描述 : Bouncycastle Keystore】密钥库的BC实现版本,provider为BC特点 : 基于JCE实现格式 : UBER扩展名 : .ubr描述 : 【Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,provider为BC2.2.2 证书⽂件格式【Certificate】格式 : DER扩展名 : .cer/.crt/.rsa描述 : 【ASN .1 DER】⽤于存放证书特点 : 不含私钥、⼆进制格式 : PKCS7扩展名 : .p7b/.p7r描述 : 【PKCS #7】加密信息语法标准特点 : 1、p7b以树状展⽰证书链,不含私钥2、p7r为CA对证书请求签名的回复,只能⽤于导⼊格式 : CMS扩展名 : .p7c/.p7m/.p7s描述 : 【Cryptographic Message Syntax】特点 : 1、p7c只保存证书2、p7m:signature with enveloped data3、p7s:时间戳签名⽂件格式 : PEM扩展名 : .pem描述 : 【Printable Encoded Message】特点 : 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样⼴泛运⽤于密钥管理2、ASCII⽂件3、⼀般基于base 64编码格式 : PKCS10扩展名 : .p10/.csr描述 : 【PKCS #10】公钥加密标准【Certificate Signing Request】特点 : 1、证书签名请求⽂件2、ASCII⽂件3、CA签名后以p7r⽂件回复格式 : SPC扩展名 : .pvk/.spc描述 : 【Software Publishing Certificate】特点 : 微软公司特有的双证书⽂件格式,经常⽤于代码签名,其中1、pvk⽤于保存私钥2、spc⽤于保存公钥2.3 常⽤证书⽂件格式 CA中⼼普遍采⽤的规范是X.509[13]系列和PKCS系列,其中主要应⽤到了以下规范:2.3.1 X.509(1993) X.509是由国际电信联盟(ITU-T)制定的数字证书标准。
crt证书格式

CRT(Certificate)证书是一种用于安全通信的数字证书文件,通常包含了公钥、数字签名、证书持有人的信息等内容。
CRT证书通常采用标准格式,最常见的格式之一是X.509证书格式。
以下是一个X.509 CRT证书的基本结构和示例:
X.509 CRT证书的基本结构包括以下主要组成部分:
1. **版本(Version)**: 证书的版本信息,通常为1。
2. **序列号(Serial Number)**: 证书的唯一序列号,用于标识不同的证书。
3. **签名算法标识(Signature Algorithm)**: 用于生成数字签名的算法标识,例如RSA、SHA-256等。
4. **颁发者(Issuer)**: 颁发证书的实体的信息,通常包括颁发者的名称、组织等。
5. **有效期(Validity)**: 证书的有效期,包括证书的生效日期和过期日期。
6. **主体(Subject)**: 证书的所有者或持有人的信息,通常包括主体的名称、组织等。
7. **公钥信息(Public Key)**: 证书持有人的公钥,用于加密和验证数字签名。
8. **数字签名(Signature)**: 证书的数字签名,用颁发者的私钥对证书内容进行签名,以确保证书的完整性和真实性。
9. **扩展(Extensions)**: 可选的扩展字段,可以包含一些额外的信息,如密钥用途、证书策略等。
p7证书格式

p7证书格式
P7证书格式,也称为PKCS#7证书格式,是一种用于封装数字证书及相关信息的标准格式。
它基于ASN.1编码规则,包含了签名、加密、数字证书、证书链等信息。
P7证书格式可以用于在网络中安全地传输和存储数字证书。
它可用于将多个证书和签名封装在一个文件中,以便于传输和管理。
通过使用P7证书格式,用户可以验证数字证书的真实性和完整性。
P7证书格式的文件通常以.p7b或.p7c作为文件扩展名。
可以使用公共密钥基础设施(PKI)工具和加密软件来创建、查看和验证P7证书。
pem证书结构说明

pem证书结构说明
PEM证书是一种用于传输非对称加密密钥和数字证书的文件格式,采用Privacy-Enhanced Mail (PEM)作为存储、传输密码学的密钥、公开密钥证书和其他数据的文件格式的业界标准。
在传输安全数据时,PEM证书起到了非常重要的作用。
其主要结构包含以下部分:
PEM格式采用了Base64编码,以ASCII表示DER格式的数据。
PEM定义了一行作为头部,一行作为尾部。
-----BEGIN加上一个标签加上-----和-----END加上一个标签加上-----。
标签确定了被编码的信息的类型,可以是:CERTIFICATE、CERTIFICATE REQUEST、PRIVATE KEY 或X509 CRL。
PEM数据的文件扩展名常为:“.pem”、“.cer”、“.crt”、“.key”。
PEM证书通常包括两部分,一部分是密钥文件,另一部分则是X.509证书。
请注意,使用PEM证书时,应确保证书的完整性和安全性,遵循相关的加密和安全标准。
x509的格式和内容 -回复

x509的格式和内容-回复X.509的格式和内容引言:互联网的快速发展和广泛应用使得网络通信的安全性问题日益凸显。
为了保护网络通信的安全性,数字证书成为了当今网络安全体系的核心组成部分之一。
其中最常见和广泛应用的数字证书格式之一就是X.509证书。
本文将会一步一步回答有关X.509的格式和内容的问题。
一、什么是X.509证书?X.509是一种公钥基础设施(PKI)标准,定义了一种用于认证和加密的数字证书的格式和内容。
它最初由国际电信联盟(ITU-T)制定,目前由国际标准化组织(ISO)管理和维护。
X.509证书是一种用于验证公钥拥有者身份的数字证书,被广泛用于SSL / TLS协议、虚拟私人网络(VPN)、数字签名和认证等安全通信协议和应用中。
二、X.509证书的格式:X.509证书包含了一系列信息,并按照特定的格式进行存储和传输。
通常,X.509证书的格式可分为三个部分,如下:1. 证书版本信息:X.509证书的第一个部分是证书的版本信息。
这个字段指示了X.509证书所遵循的规范版本。
通常使用的版本是v1、v2和v3。
每个版本都有相应的扩展和功能,后续版本兼容之前的版本。
例如,v1版本具有基本的身份认证和密钥材料,而v3版本已经添加了更多的功能和扩展,例如证书扩展字段、证书链等。
2. 证书序列号:证书序列号用于唯一标识该证书。
它是一个递增的正整数,并且对于每个颁发的证书都是唯一的。
3. 签名算法标识:签名算法标识是指用来对证书进行签名的算法类型。
它告知接收者使用何种算法可以对证书进行校验和验证。
4. 颁发者信息:颁发者信息包含了证书颁发者的身份和相关的证书信息。
它包括颁发者的名称(通常是一个组织或机构的名称)、颁发者的公钥以及颁发者的数字签名。
5. 有效期:有效期指示了证书的生效和失效时间。
X.509证书具有一个起始日期和一个终止日期,只有在有效期内的证书才会被认可和接受。
6. 主体信息:主体信息包含了证书拥有者的身份和相关的证书信息。
p7b证书格式

p7b证书格式
P7B是一种常见的证书文件格式,通常用于存储数字证书。
P7B文件通常包含证书链(即一组证书),其中可能包括根证书、中间证书和最终用户证书。
这些证书通常用于加密通信、数字签名和安全连接等方面。
P7B证书文件采用基于ASN.1(抽象语法标记)的DER编码格式,这是一种二进制编码格式,用于表示证书和其他安全数据。
P7B文件通常使用“.p7b”作为文件扩展名。
P7B文件通常以文本形式进行存储,但实际上包含了二进制数据。
如果你需要将P7B证书文件安装到特定的系统或应用程序中,你可能需要进行相应的解码和安装操作。
卫生系统数字证书格式规范

卫生系统电子认证服务体系系列规范- 卫生系统数字证书格式规范(试行)卫生部办公厅XX年4月30日目录1 范围 (1)2 数字证书类别 (1)3 数字证书基本格式 (1)3.1基本结构 (1)3.2基本证书域TBSCertificate (1)3.3 签名算法域SignatureAlgorithm (5)3.4 签名值域SignatureValue (5)3.5 命名规范 (5)4 数字证书模板 (5)4.1 个人证书模版 (5)4.2 机构证书模版 (6)4.3 设备证书模版 (8)5 CRL格式 (9)5.1 CRL基本结构 (9)5.2 CRL模版 (10)附录A (资料性附录) 证书主体DN命名示例 (11)附录B (资料性附录) 证书格式编码示例 (12)附录C (资料性附录) 名词解释 (20)1 范围本规范描述了卫生系统电子认证服务体系中使用的数字证书的类型、数字证书和证书撤销列表的格式,制定了各类数字证书及证书撤消列表格式模板,用于指导电子认证服务机构签发统一格式的数字证书和证书撤消列表,以保障数字证书在卫生系统内各信息系统之间的互信互认。
本规范在GB/T 20518-2006《信息安全技术 公钥基础设施 数字证书格式》基础上,针对卫生系统的电子认证需求,在证书类型、证书格式模板、实体唯一标识扩展项等方面进行了扩充,以适应卫生系统的业务特点和应用需求。
2 数字证书类别根据卫生系统用户特点及应用需求,数字证书按照内部用户和外部用户分成如下六类。
1) 内部机构证书 2) 内部工作人员证书 3) 内部设备证书 4) 外部机构证书 5) 外部个人证书 6) 外部设备证书 3 数字证书基本格式3.1 基本结构数字证书的基本结构由基本证书域TBSCertificate 、签名算法域SignatureAlgorithm 、签名值域SignatureValue 等三部分组成。
其中,基本证书域由基本域和扩展域组成,如图1所示:图 1 数字证书基本结构示意图3.2 基本证书域 TBSCertificate基本证书域包括基本域和扩展域。
cer证书格式 -回复

cer证书格式-回复什么是CER证书格式?CER证书格式,全称为"Internet X.509 Public Key Certificate",是一种用于证实数字证书有效性和完整性的标准格式。
它广泛应用于配置和管理网络安全协议(如SSL / TLS)中。
CER证书格式由一组包含公共密钥、证书持有人身份信息以及数字签名等数据的二进制编码组成。
这些数据的结构遵循国际标准ASN.1(抽象语法记号一)定义,使得CER证书能够被解码和验证其真实性。
首先,一个CER证书需要包含证书发布机构(Certificate Authority,简称CA)签发的数字证书。
CA是负责签发、验证和管理数字证书的可信任机构。
其数字证书证实了证书持有人与公共密钥之间的关联和身份真实性。
其次,CER证书还需要包含一对公钥和私钥。
公钥是证书持有人用来加密数据或验证签名的密钥。
私钥则是证书持有人用来解密数据或生成数字签名的密钥。
这对密钥是通过非对称加密算法生成的。
CER证书还包含了证书持有人的身份信息,如名称、电子邮箱、组织名称等。
这些信息用于验证证书持有人的身份,并可用于向用户展示证书持有人的身份相关信息。
此外,CER证书还包含了由CA签发的数字签名。
数字签名是CA使用其私钥对证书的哈希值进行加密,用于确保证书的完整性和真实性。
在验证证书时,用户可以使用CA的公钥解密数字签名,然后计算证书的哈希值,并与数字签名进行比较,以验证证书是否有效和完整。
为了增加CER证书的安全性,它还可以包含证书扩展信息,如证书的有效期、使用限制等。
最后,CER证书通常以二进制形式存储,并使用DER(Distinguished Encoding Rules)编码格式进行传输和解析。
DER格式以字节表示,相比其他编码格式(如PEM),更加紧凑、高效。
总而言之,CER证书格式是一种用于证实数字证书有效性和完整性的标准格式。
它包含了签发机构、公钥和私钥、证书持有人身份信息以及数字签名等数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字证书格式常见的数字证书格式cer后缀的证书文件有两种编码-->DER二进制编码或者BASE64编码(也就是.pem)p7b一般是证书链,里面包括1到多个证书pfx是指以pkcs#12格式存储的证书和相应私钥。
在Security编程中,有几种典型的密码交换信息文件格式:DER-encoded certificate: .cer, .crtPEM-encoded message: .pemPKCS#12 Personal Information Exchange: .pfx, .p12PKCS#10 Certification Request: .p10PKCS#7 cert request response: .p7rPKCS#7 binary message: .p7b.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式p10是证书请求p7r是CA对证书请求的回复,只用于导入p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
其中,我介绍如何从p12/pfx文件中提取密钥对及其长度:1,首先,读取pfx/p12文件(需要提供保护密码)2,通过别名(Alias,注意,所有证书中的信息项都是通过Alias来提取的)提取你想要分析的证书链3,再将其转换为一个以X509证书结构体4,提取里面的项,如果那你的证书项放在第一位(单一证书),直接读取 x509Certs[0](见下面的代码)这个X509Certificate对象5,X509Certificate对象有很多方法,tain198127网友希望读取RSA密钥(公私钥)及其长度(见/thread.shtml?topicId=43786&forumId=55&#reply),那真是太Easy了,X509Certificate keyPairCert = x509Certs[0];int iKeySize = X509CertUtil.getCertificateKeyLength(keyPairCert);System.out.println("证书密钥算法="+keyPairCert.getPublicKey().getAlgorithm());System.out.println("证书密钥长度="+iKeySize);提取了他所需要的信息。
X.509定义了两种证书:公钥证书和属性证书PKCS#7和PKCS#12使用的都是公钥证书PKCS#7的SignedData的一种退化形式可以分发公钥证书和CRL一个SignedData可以包含多张公钥证书PKCS#12可以包含公钥证书及其私钥,也可包含整个证书链简介Java自带的keytool工具是个密钥和证书管理工具。
它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。
它还允许用户储存他们的通信对等者的公钥(以证书形式)。
keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中。
缺省的密钥仓库实现将密钥仓库实现为一个文件。
它用口令来保护私钥。
Java KeyStore的类型JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型(我所知道的共有5种,JKS, JCEKS, PKCS12, BKS,UBER)。
JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我们都能够直接使用它。
JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDes)。
PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。
其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。
BKS 来自BouncyCastle Provider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个 bit都会产生错误),BKS能够跟JKS互操作,读者可以用Keytool去TryTry。
UBER比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。
整个keystore是通过PBE/SHA1/Twofish加密,因此keystore能够防止被误改、察看以及校验。
以前,Sun JDK(提供者为SUN)允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。
证书导入Der/Cer证书导入:要从某个文件中导入某个证书,使用keytool工具的-import命令:keytool -import -file mycert.der -keystore mykeystore.jks如果在-keystore 选项中指定了一个并不存在的密钥仓库,则该密钥仓库将被创建。
如果不指定-keystore 选项,则缺省密钥仓库将是宿主目录中名为 .keystore 的文件。
如果该文件并不存在,则它将被创建。
创建密钥仓库时会要求输入访问口令,以后需要使用此口令来访问。
可使用-list命令来查看密钥仓库里的内容:keytool -list -rfc -keystore mykeystore.jksP12格式证书导入:keytool无法直接导入PKCS12文件。
第一种方法是使用IE将pfx证书导入,再导出为cert格式文件。
使用上面介绍的方法将其导入到密钥仓库中。
这样的话仓库里面只包含了证书信息,没有私钥内容。
第二种方法是将pfx文件导入到IE浏览器中,再导出为pfx文件。
新生成的pfx不能被导入到keystore中,报错:keytool错误:ng.Exception: 所输入的不是一个X.509 认证。
新生成的pfx文件可以被当作keystore使用。
但会报个错误as unknown attr1.3.6.1.4.1.311.17.1,查了下资料,说IE导出的就会这样,使用Netscape就不会有这个错误.第三种方法是将pfx文件当作一个keystore使用。
但是通过微软的证书管理控制台生成的pfx文件不能直接使用。
keytool不认此格式,报keytool错误:java.io.IOException: failed to decrypt safe contents entry。
需要通过OpenSSL转换一下:1)openssl pkcs12 -in mycerts.pfx -out mycerts.pem2)openssl pkcs12 -export -in mycerts.pem -out mykeystore.p12通过keytool的-list命令可检查下密钥仓库中的内容:keytool -rfc -list -keystore mykeystore.p12 -storetype pkcs12这里需要指明仓库类型为pkcs12,因为缺省的类型为jks。
这样此密钥仓库就即包含证书信息也包含私钥信息。
P7B格式证书导入:keytool无法直接导入p7b文件。
需要将证书链RootServer.p7b(包含根证书)导出为根rootca.cer和子rootcaserver.cer 。
将这两个证书导入到可信任的密钥仓库中。
keytool -import -alias rootca -trustcacerts -file rootca.cer -keystore testkeytrust.jks遇到是否信任该证书提示时,输入ykeytool -import -alias rootcaserver -trustcacerts -file rootcaserver.cer -keystore testkeytrust.jks总结:1)P12格式的证书是不能使用keytool工具导入到keystore中的2)The Sun's PKCS12 Keystore对从IE和其他的windows程序生成的pfx格式的证书支持不太好.3)P7B证书链不能直接导入到keystore,需要将里面的证书导出成cer格式,再分别导入到keystore。
**************************************数字证书文件格式(cer和pfx)的区别作为文件形式存在的证书一般有这几种格式:1.带有私钥的证书由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。
2.二进制编码的证书证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。
3.Base64编码的证书证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。
由定义可以看出,只有pfx格式的数字证书是包含有私钥的,cer 格式的数字证书里面只有公钥没有私钥。
在pfx证书的导入过程中有一项是“标志此密钥是可导出的。
这将您在稍候备份或传输密钥”。
一般是不选中的,如果选中,别人就有机会备份你的密钥了。
如果是不选中,其实密钥也导入了,只是不能再次被导出。
这就保证了密钥的安全。
如果导入过程中没有选中这一项,做证书备份时“导出私钥”这一项是灰色的,不能选。
只能导出cer格式的公钥。
如果导入时选中该项,则在导出时“导出私钥”这一项就是可选的。
如果要导出私钥(pfx),是需要输入密码的,这个密码就是对私钥再次加密,这样就保证了私钥的安全,别人即使拿到了你的证书备份(pfx),不知道加密私钥的密码,也是无法导入证书的。
相反,如果只是导入导出cer格式的证书,是不会提示你输入密码的。
因为公钥一般来说是对外公开的,不用加密*************************SSL证书类型和转换PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。
常用的有:PKCS#7 Cryptographic Message Syntax StandardPKCS#10 Certification Request StandardPKCS#12 Personal Information Exchange Syntax StandardX.509是常见通用的证书格式。