x509文件扩展名编码格式加密方式.

上传人:今*** 文档编号:105734813 上传时间:2019-10-13 格式:DOCX 页数:16 大小:297.27KB
返回 下载 相关 举报
x509文件扩展名编码格式加密方式._第1页
第1页 / 共16页
x509文件扩展名编码格式加密方式._第2页
第2页 / 共16页
x509文件扩展名编码格式加密方式._第3页
第3页 / 共16页
x509文件扩展名编码格式加密方式._第4页
第4页 / 共16页
x509文件扩展名编码格式加密方式._第5页
第5页 / 共16页
点击查看更多>>
资源描述

《x509文件扩展名编码格式加密方式.》由会员分享,可在线阅读,更多相关《x509文件扩展名编码格式加密方式.(16页珍藏版)》请在金锄头文库上搜索。

1、X509 文件扩展名首先我们要理解文件的扩展名代表什么。DER、PEM、CRT和CER这些扩展名经常令人困惑。很多人错误地认为这些扩展名可以互相代替。尽管的确有时候有些扩展名是可以互换的,但是最好你能确定证书是如何编码的,进而正确地标识它们。正确地标识证书有助于证书的管理。这些扩展名对openssl是没有意义的编码 (也用于扩展名) .DER=扩展名DER用于二进制DER编码的证书。这些证书也可以用CER或者CRT作为扩展名。比较合适的说法是“我有一个DER编码的证书”,而不是“我有一个DER证书”。 .PEM= 扩展名PEM用于ASCII(Base64)编码的各种X.509 v3 证书。文件

2、开始由一行 BEGIN “开始。常用的扩展名 .CRT= 扩展名CRT用于证书。证书可以是DER编码,也可以是PEM编码。扩展名CER和CRT几乎是同义词。这种情况在各种unix/linux系统中很常见。 CER= CRT证书的微软型式。可以用微软的工具把CRT文件转换为CER文件(CRT和CER必须是相同编码的,DER或者PEM)。扩展名为CER的文件可以被IE识别并作为命令调用微软的cryptoAPI(具体点就是rudll32.exe cryptext.dll, CyrptExtOpenCER),进而弹出一个对话框来导入并/或查看证书内容。 .KEY= 扩展名KEY用于PCSK#8的公钥和

3、私钥。这些公钥和私钥可以是DER编码或者PEM编码。CRT文件和CER文件只有在使用相同编码的时候才可以安全地相互替代。在通信系统中,为了让通信双方对通信媒介中传输的信息产生一致的理解,通信双方就必须明确所交换的信息类型与格式,ASN.1便是ITU-T为支持这种要求而制定的。在目前的通信领域中,由ASN.1所描述的信息或信息流若要在网络的各节点间进行传送,就必须先在发送端对他进行编码,转换成物理媒介(网络)可以传输的八位位组(OCTET)串的形式,然后才能通过网络发送到目的节点;接收端再按约定的规则对其进行解码,把它从8位位组串的形式恢复成应用实体直接可用的形式,从而完成信息的传输和接收1.

4、ASN.1的基本编码规则BER(Basic Encoding Rules)ISO在推出ASN.1的同时也推出了基本编码规则BER。实际上这是一种传送语法,它可以把复杂的用抽象语法描述的数据结构表示成简单的数据流,从而便于在通信线路上传送。BER以8bit为一个基本传送单位。对于每个所传送的值,无论是基本类型还是构造类型,都由TLV三个字段组成,TLV分别指类型标识符域(TAG),数据长度域(LENGTH)和数据域(VALUE)字段。其中,数据域可以多重嵌套其他数据元素的TLV字段,BER编码的具体格式如下所示类型标识符域(T)数据长度域(L)TLVTLV数据域(V) 类型标识符域占用一个字节,

5、从低位为1开始编号,8和7位表示Tag类型,第6位是0表示编码类型是基本类型,第5 1位是Tag值,各个位表示的意义如下:bit取值表示含义8 70 0Universal (简单类型)0 1Application(应用类型)1 0context-specific(上下文类型)1 1private(专用类型)60原始类型1构造类型5 1TAG值 数据长度域拥有短形式和长形式两种1. 短形式的数据长度域只有一个字节,第8位为0,其他低7位给出数据长度。2. 长形式的数据长度域有 2 127个字节第一个字节的的第8位为1,其他低7位给出后面该域使用的字节的数量,从该域的第二个字节开始给出数据的长度

6、数据域给出了具体的数据值。该域的编码对不同的数据类型不一样2. ASN.1的紧缩编码规则PER(Packet Encoding Rules)BER解决了不同终端系统之间的表示问题,但也带来了大量的冗余信息增加了通信量的开销。对应用而言,编码开销出现在编码格式TLV三个字段的每个部分。紧缩编码规则(Packed Encoding Rules, PER)就是在BER的基础上,以减少编码开销为目的而设计的编码规则。使用PER的一个重要的前提是,用户数据是单个ASN.1类别,且接收方也有一个相同的ASN.1描述。基于此,PER可以抛弃BER按步就班的编码规则,省略对数据结构的编码,PER编码仍然采用T

7、LV格式,尽管类型和长度字段经常可以忽略。与BER编码相比PER编码主要使用了三方面减小编码结果长度的技术,省略类型标识符,长度段的编码更加精简和对数字类型的编码更加精简。 省略类型标识符省略类型标识符在编码中似乎是一个重在部分,但实际上通常是不必要的,由于网络通信双方都遵循统一的网络协议,因此它们不可以从数据结构中推导出特定元素的类型和标识,就可以在编码中省略类型标识符 长度段的编码更加精简BER的长度段的编码都是字节,而且BER长度的编码不考虑具体条件,然而PER的长度字段根据编码的类型的不同,有不同的单位。这些单位可以是比特、字节、元素、字符等,这也是PER利用数据结构已知的优势来减少编

8、码量的又一方式;而且根据具体的条件限制,PER的长度段还可以大幅度削减,譬如当数据类型的长度固定时,该数据项的长度可以不编码。 对数字类型的编码更加精简在对Integer等数字类型(包括Integer和一些类型的长度值编码的情况)进行编码时,BER采取的是直接对数值进行编码;而PER采取的是对数据的偏移值offset进行编码。所谓偏移值就是实际值减去下界的值。例如:Integer(123456789 . 123456790),在PER编码中123456790的offset=1,因此PER只需对1进行编码,这样对于那些下界类型很大的整数,可以节省大量字节,且编码本身非常简洁。证书文件编码格式介绍

9、OpenSSL中虽然使用PEM作为基本的文件编码格式,但是,由于不同的对象其封装和标准格式不太一样,所以经常会导致读者产生迷惑。一、数据编码格式 首先介绍一下ASN.1(Abstract Syntax Notation One)标准,这是一种描述数字对象的方法和标准。ASN1是一种结构化的数字对象描述语言,它包括两部分:数据描述语言(ISO 8824)和数据编码规则(ISO 8825)。ASN.1的数据描述语言允许用户自定义基本的数据类型,并可以通过简单的数据类型组成更复杂的数据类型。比如:一个复杂的数据对象,如X.509证书,就是在其他一些数据类型上定义的,而其他数据类型又是在更基本的数据类

10、型上建立的,直到回溯到定义的最基本的数据类型。 ASN.1提供了多种数据编码方法。包括了BER、DER、PER和XER等。这些编码方法规定了将数字对象转换成应用程序能够处理、保存和网络传输的二进制编码形式的一组规则。目前经常被采用的是BER(Basic Encode Rules)编码,但是BER编码具有编码不唯 一的性质,也就是说,一个相同的对象通过BER编码可能会产生几种不同的编码数据。所以,在OpenSSL和其他密码学相关软件中经常使用BER的一个子DER(Distinguished Encoding Rules)。对于每一个ASN.1对象,使用DER编码得出的二制编码码数据是唯 一的。

11、PEM编码全称是Privacy Enhanced Mail,是一种保密邮件的编码标准。通常来说,对信息的编码过程基本如下。1. 信息转换为ASCII码或其他编码方式,比如采用DER编码。2. 使用对称加密算法加密经过编码的信息。3. 使用BASE64对加密码后的信息进行编码。4. 使用一些头定义对信息进行封装,主要包含了进行正确解码需要的信息,头定义的格式形式如下:Proc-Type:4,ENCRYPTEDDEK-Info:cipher-name,ivec其中,第一个头信息标注了该文件是否进行了加密,该头信息可能的值包括ENCRYPTED(信息已经加密和签名),MIC-ONLY(信息经过数据签

12、名但没有加密),MIC-CLEAR(信息经过数字签名但是没有加密,也没有进行编码,可使用非PEM格式阅读),以及CLEAR;第二个头信息标注了加密的算法及对称加密块算法使用的初始向量。5. 在这些信息的前面加上如下形式头标注信息:-BEGIN PRIVACY-ENHANCED MESSAGE-在这些信息的后面加上如下形尾标注信息:-END PRIVACY-ENHANCED MESSAGE-OpenSSL的PEM编码基本上是基于DER编码之上的,也就是说,它在上述第一步采用的是DER编码,所以,从本质上来说,OpenSSL的PEM编码就是在DER编码基础上进行BASE64编码,然后添加一些头尾信

13、息组成的。二、证书标准 数据编码格式提供了封装数据的基本方法,但是,对于具体的数据对象,比如证书,根据其包含的内容的不同,还有更具体的表达式。 1、X.509证书 目前总的来说有三种常用的证书编码格式:X.509证书、PKCS#12证书和PKCS#7证书。X.509证书是最经常使用的证书,它仅包含了公钥信息而没有私钥信息,是可以公开进行发布的,所以X.509证书对象一般都不需要加密。 X.509证书的格式通常如下: 相关的可读解释信息(省略) -BEGIN CERTIFICATE- PEM编码的X.509证书内容(省略) -END CERTIFICATE- 除了“-BEGIN CERTIFIC

14、ATE-”和“-END CERTIFICATE-”头尾格式外,还可能有这样不同的标识符:“-BEGIN X.509 CERTIFICATE-”、“-END X.509 CERTIFICATE-”或者“-BEGIN TRUSTED CERTIFICATE-”、“-END TRUSTED CERTIFICATE-” 在OpenSSL实际签发的证书文件中最前面的很多可读的证书明文解释,只是为了增加证书文件的可读性,并不代表真正的数据。在其他软件中,比如Windows软件,可能并不支持这些额外的明文信息,所以,先要将“-BEGIN CERTIFICATE-”之前的所有可读信息去掉。可以手动删除,也可以使用PEM到PEM的证书格式转换去掉这些明文可读信息。 在Windows平台,X.509证书文件的后缀名经常是der、cer或者crt,都是可以被自动识别的。对于OpenSSL来说,后缀名是没有实际意义的。 2、Netscape证书标准 Netscape提供了一种名为Netscap证书序列(Netscape Cerificate Sequence)的格式来封装一系列证书(实际上里面采用了一个PKCS#7格式来封装证书)。以便能够一次性地下载或者传输多个数字证书。所以,某些时候,Netscape证书序列可以替代PKCS#7的作用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号