数字证书格式_第1页
数字证书格式_第2页
数字证书格式_第3页
数字证书格式_第4页
数字证书格式_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

千里之行,始于足下。第2页/共2页精品文档推荐数字证书格式数字证书格式

常见的数字证书格式

cer后缀的证书文件有两种编码-->DER二进制编码或者BASE64编码(也算是.pem)p7b普通是证书链,里面包括1到多个证书pfx是指以pkcs#12格式存储

的证书和相应私钥。在Security编程中,有几种典型的密码交换信息文件格式:DER-encodedcertificate:.cer,.crt

PEM-encodedmessage:.pem

PKCS#12PersonalInformationExchange:.pfx,.p12

PKCS#10CertificationRequest:.p10

PKCS#7certrequestresponse:.p7r

PKCS#7binarymessage:.p7b

.cer/.crt是用于存放证书,它是2进制形式存放的,别含私钥。

.pem跟crt/cer的区不是它以Ascii来表示。

pfx/p12用于存放个人证书/私钥,他通常包含爱护密码,2进制方式

p10是证书请求

p7r是CA对证书请求的回复,只用于导入

p7b以树状展示证书链(certificatechain),并且也支持单个证书,别含

私钥。其中,我介绍怎么从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了,

X509CertificatekeyPairCert=x509Certs[0];

intiKeySize=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)中。缺省的密钥仓库实现将密钥仓库实现为一具文件。它用口令来爱护私钥。

JavaKeyStore的类型

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来自BouncyCastleProvider,它使用的也是TripleDES来爱护密钥库中的Key,它可以防止证书库被别小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS可以跟JKS互操作,读者能够用Keytool去TryTry。UBER比较特殊,当密码是经过命令行提供的时候,它只能跟keytool交互。整个keystore是经过PBE/SHA1/Twofish加密,所以keystore可以防止被误改、察看以及校验。往常,SunJDK(提供者为SUN)允许你在别提供密码的事情下直截了当加载一具Keystore,类似cacerts,UBER别允许这种事情。

证书导入

Der/Cer证书导入:

要从某个文件中导入某个证书,使用keytool工具的-import命令:

keytool-import-filemycert.der-keystoremykeystore.jks

假如在-keystore选项中指定了一具并别存在的密钥仓库,则该密钥仓库将被创建。假如别指定-keystore选项,则缺省密钥仓库将是宿主名目中名为.keystore的文件。假如该文件并别存在,则它将被创建。创建密钥仓库时会要求输入拜访口令,往后需要使用此口令来拜访。可使用-list命令来查看密钥仓库里的内容:

keytool-list-rfc-keystoremykeystore.jks

P12格式证书导入:

keytool无法直截了当导入PKCS12文件。

第一种办法是使用IE将pfx证书导入,再导出为cert格式文件。使用上面介绍的办法将其导入到密钥仓库中。如此的话仓库里面只包含了证书信息,没有私钥内容。

第二种办法是将pfx文件导入到IE扫瞄器中,再导出为pfx文件。

新生成的pfx别能被导入到keystore中,报错:keytool错误:java.lang.Exception:所输入的别是一具

X.509认证。新生成的pfx文件能够被当作keystore使用。但会报个错误asunknownattr.4.1.311.17.1,

查了下资料,讲IE导出的就会如此,使用Netscape就不可能有那个错误.

第三种办法是将pfx文件当作一具keystore使用。然而经过微软的证书治理操纵台生成的pfx文件别能直截了当使用。

keytool别认此格式,报keytool错误:java.io.IOException:failedtodecryptsafecontentsentry。需要

经过OpenSSL转换一下:

1)opensslpkcs12-inmycerts.pfx-outmycerts.pem

2)opensslpkcs12-export-inmycerts.pem-outmykeystore.p12

经过keytool的-list命令可检查下密钥仓库中的内容:

keytool-rfc-list-keystoremykeystore.p12-storetypepkcs12

这个地方需要指明仓库类型为pkcs12,因为缺省的类型为jks。如此此密钥仓库就即包含证书信息也包含私钥信息。

P7B格式证书导入:

keytool无法直截了当导入p7b文件。

需要将证书链RootServer.p7b(包含根证书)导出为根rootca.cer和子rootcaserver.cer。

将这两个证书导入到可信任的密钥仓库中。

keytool-import-aliasrootca-trustcacerts-filerootca.cer-keystoretestkeytrust.jks

遇到是否信任该证书提示时,输入y

keytool-import-aliasrootcaserver-trustcacerts-filerootcaserver.cer-keystoretestkeytrust.jks

总结:

1)P12格式的证书是别能使用keytool工具导入到keystore中的

2)TheSun'sPKCS12Keystore对从IE和其他的windows程序生成的pfx格式的证书支持别太好.

3)P7B证书链别能直截了当导入到keystore,需要将里面的证书导出成cer格式,再分不导入到keystore。

**************************************

数字证书文件格式(cer和pfx)的区不

作为文件形式存在的证书普通有这几种格式:

1.带有私钥的证书

由PublicKeyCryptographyStandards#12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以

pfx作为证书文件后缀名。

2.二进制编码的证书

证书中没有私钥,DER编码二进制格式的证书文件,以cer作为证书文件后缀名。

3.Base64编码的证书

证书中没有私钥,BASE64编码格式的证书文件,也是以cer作为证书文件后缀名。由定义能够看出,惟独pfx格式的数字证书是包含有私钥的,cer格式的数字证书里面惟独公钥没有私钥。在pfx证书的导入过程中有一项是“标志此密钥是可导出的。这将您在稍候备份或传输密钥”。普通是别选中的,假如选中,不人就有机遇备份你的密钥了。假如是别选中,事实上密钥也导入了,不过别能再次被导出。这就保证了密钥的安全。

假如导入过程中没有选中这一项,做证书备份时“导出私钥”这一项是灰XXX的,别能选。只能导出cer格式的公钥。

假如导入时选中该项,则在导出时“导出私钥”这一项算是可选的。

假如要导出私钥(pfx),是需要输入密码的,那个密码算是对私钥再次加密,如此就保证了私钥的安全,不人即使拿到了你的证书备份(pfx),别懂加密私钥的密码,也是无法导入证书的。相反,假如不过导入导出cer格式的证书,是不可能提示你输入密码的。因为公钥普通来讲是对外公开的,别用加密

*************************

SSL证书类型和转换

PKCS全称是Public-KeyCryptographyStandards,是由RSA实验室与其它安全系统开辟商为促进公钥密码的进展而制订的一系列标准,PKCS目前共公布过15个标准。常用的有:

PKCS#7CryptographicMessageSyntaxStandard

PKCS#10CertificationRequestStandard

PKCS#12PersonalInformationExchangeSyntaxStandard

X.509是常见通用的证书格式。所有的证书都符合为PublicKeyInfrastructure(PKI)制定的ITU-TX509国际标准。

PKCS#7常用的后缀是:.P7B.P7C.SPC

PKCS#12常用的后缀有:.P12.PFX

X.509DER编码(ASCII)的后缀是:.DER.CER.CRT

X.509PAM编码(Base64)的后缀是:.PEM.CER.CRT

.cer/.crt是用于存放证书,它是2进制形式存放的,别含私钥。

.pem跟crt/cer的区不是它以Ascii来表示。

pfx/p12用于存放个人证书/私钥,他通常包含爱护密码,2进制方式

p10是证书请求

p7r是CA对证书请求的回复,只用于导入

p7b以树状展示证书链(certificatechain),并且也支持单个证书,别含私钥。

1.生成私钥Generatetheprivatekey

请使用以下命令来生成私钥

opensslgenrsa–des3–out[url].key[/url]1024如上图所示,此命令将生成1024位的RSA私钥,私钥文件名为:[url]ww.key[/url],会提示您设

定私钥密码,请设置密码,并牢记!

2.生成CSR文件GeneratetheCSR

请使用以下命令来生成CSR

opensslreq–new–key[url].key[/url]–out[url].csr[/url]

此命令将提示您输入X.509证书所要求的字段信息,包括国家(中国添CN)、省份、所在都市、单位名称、单位部门

名称(能够别填直截了当回车)。请注意:除国家缩写必须填CN外,其余都能够是英文或中文。

请输入您要申请SSL证书的域名,假如您需要为[url][/url]申请SSL证书就别能只输入

。SSL证书是严格绑定域名的。

请别要输入Email、口令(challengepassword)和可选的公司名称,直截了当打回车即可。

您如今差不多成功生成了密钥对,私钥文件:[url].key[/url]保存在您的服务器中,请把CSR文

件:[url].csr[/url]发给WoTrust/Thawte即可,CSR文件格式如下图所示。

3.备份私钥文件Backupyourprivatekey

请备份您的私钥文件并记下私钥密码。最好是把私钥文件备份到软盘或光盘中。

4.测试CSR

生成CSR后,建议您自个儿测试一下生成的CSR文件是否正确,

一用openssl创建CA证书的RSA密钥(PEM格式):

opensslgenrsa-des3-outca.key1024

二用openssl创建CA证书(PEM格式,如果有效期为一年):

opensslreq-new-x509-days365-keyca.key-outca.crt-configf

openssl是能够生成DER格式的CA证书的,最好用IE将PEM格式的CA证书转换成DER格式的CA证书。

三x509到pfx

opensslpkcs12-export-outserver.pfx-inkeyserver.key-inserver.crt

四PEM格式的ca.key转换为Microsoft能够识不的pvk格式。

pvk-inca.key-outca.pvk-nocrypt-topvk

五PKCS#12到PEM的转换

opensslpkcs12-nocerts-nodes-incert.p12-outprivate.pem

验证opensslpkcs12-clcerts-nokeys-incert.p12-outcert.pem六从PFX格式文件中提取私钥格式文件(.key)

opensslpkcs12-inmycert.pfx-nocerts-nodes-outmycert.key

七转换pem到到spc

opensslcrl2pkcs7-nocrl-certfilevenus.pem-outformDER-outvenus.spc

用-outform-inform指定DER依然PAM格式。例如:

opensslx509-inCert.pem-informPEM-outcert.der-outformDER

八PEM到PKCS#12的转换,

opensslpkcs12-export-inCert.pem-outCert.p12-inkeykey.pem

cdc:\opensslsetOPENSSL_CONF=fopensslpkcs12-

export-outserver.pfx-inkeyserver.key-inserver.crt

(server.key和server.crt文

件是Apache的证书文件,生成的server.pfx用于导入IIS)

*********************

公钥和私钥的区不

公钥密码体制的核心思想是:加密和解密采纳别同的密钥。这是公钥密码体制和传统的对称密码体制最大的区不。关于传统对称密码而言,密文的安全性彻底依靠于密钥的保密性,一旦密钥泄漏,将毫无保密性可言。然而公钥密码体制完全改变了这一状况。在公钥密码体制中,公钥是公开的,惟独私钥是需要保密的。懂公钥和密码算法要猜测出私钥在计算上是别可行的。如此,只要私钥是安全的,这么加密算是可信的。

显然,对称密码和公钥密码都需要保证密钥的安全,别同之处在于密钥的治理和分发上面。在对称密码中,必须要有一种可靠的手段将加密密钥(并且也是解密密钥)告诉给解密方;而在公钥密码体制中,这是别需要的。解密方只需要保证自个儿的私钥的保密性即可,关于公钥,不管是对加密方而言依然对密码分

析者而言基本上公开的,故无需思考采纳可靠的通道举行密码分发。这使得密钥

治理和密钥分发的难度大大落低了。

加密和解密:发送方利用接收方的公钥对要发送的明文举行加密,同意方利

用自个儿的

私钥举行解密,其中公钥和私钥匙相对的,任何一具作为公钥,则另一具

就为私钥.然而因为非对称加密技术的速度比较慢,因此,普通采纳对称

加密技术加密明文,然后用非对称加密技术加密对称密钥,即数字信封技术.

签名和验证:发送方用特别的hash算法,由明文中产生固定长度的摘要,然后利用

自个儿的私钥对形成的摘要举行加密,那个过程就叫签名。同意方利用

发送方的公钥解密被加密的摘要得到结果A,然后对明文也举行hash操

作产生摘要B.最终,把A和B作比较。此方式既能够保证发送方的身份别

可抵赖,又能够保证数据在传输过程中不可能被篡改。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论