2023年12月13日发(作者:)

pem格式证书编码x509_PEM证书格式

Openssl

PEM

系列

作者

:

LaoKa

20080426

编码文件结构介绍

PEM

全称是

Privacy Enhanced Mail

,该标准定义了加密一个准备要发送邮件的标准,主要用来将各种

对象保存成

PEM

格式,并将

PEM

格式的各种对象读取到相应的结构中。它的基本流程是这样的:

1.

信息转换为

ASCII

码或其它编码方式;

2.

使用对称算法加密转换了的邮件信息;

3.

使用

BASE64

对加密后的邮件信息进行编码;

4.

使用一些头定义对信息进行封装,这些头信息格式如下(不一定都需要,可选的)

Proc-Type,4:ENCRYPTEDDEK-Info: cipher-name, ivec

其中,

第一个头信息标注了该文件是否进行了加密,

该头信息可能的值包

ENCRYPTED(

信息已经加密和签名

)

MIC-ONL

Y(

信息经过数字签名但没有加密

)

MIC-CLEAR(

信息经

过数字签名但是没有加密、也没有进行编码,可使用非

PEM

格式阅读

)

以及

CLEAR(

信息没有签名和加密

并且没有进行编码,

该项好象是

openssl

自身的扩展,

但是并没有真正实现

)

第二个头信息标注了加密的

算法以及使用的

ivec参量,

ivec

其实在这儿提供的应该是一个随机产生的数据序列,与块加密算法中要使

用到的初始化变量(

IV

)不一样。

5.

在这些信息的前面加上如下形式头标注信息:

-----BEGIN PRIV

ACY-ENHANCED MESSAGE-----

在这些信息的后面加上如下形式尾标注信息:

-----END PRIVACY-ENHANCED MESSAGE-----

上面是

openssl

PEM

文件的基本结构,需要注意的是,

Openssl

并没有实现

PEM

的全部标准,它只

是对

openssl

中需要使用的一些选项做了实现,详细的

PEM

格式,请参考

RFC1421

1424

下面是一个

PEM

编码的经过加密的

DSA私钥的例子:

-----BEGIN DSA PRIV

A

TE KEY-----

Proc-Type: 4,ENCRYPTED

DEK-Info: DES-EDE3-CBC,F80EEEBEEA7386C4

GZ9zgFcHOlnhPoiSbVi/yXc9mGoj44A6IveD4UlpSEUt6Xbse3Fr0KHIUyQ3oGnSmClKoAp/eOTb5Frhto85Szd

sxYtac+X1v5XwdzAMy2KowHVk1N8A5jmE2OlkNPNtof132MNlo2cyIRYaa35PPYBGNCmUm7YcYS8O90Y

tkrQZZTf4+2C4kllhMcdkQwkrFWSWC8YOQ7w0LHb4cX1FejHHom9Nd/0PN3vn3UyySvfOqoR7nbXkrpHX

mPIr0hxXRcF0aXcV/CzZ1/nfXWQf4o3+oD0T22SDoVcZY60IzI0oIc3pNCbDV3uKNmgekrFdqOUJ+QW8oW

p7oefRx62iBfIeC8DZunohMXaW

AQCU0sLQOR4yEdeUCnzCSywe0bG1diD0KYaEe+Yub1BQH4aLsBgDjardg

pJRTQLq0DUvw0/QGO1irKTJzegEDNVBKrVnV4AHOKT1CUKqvGNRP1UnccUDTF6miOAtaj/qpzra7sSk7d

kGBvIEeFoAg84kfh9hhVvF1YyzC9bwZepruoqoUwke/WdNIR5ymOVZ/4Liw0JdIOcq+atbdRX08niqIRkfdsZrU

j4leo3zdefYUQ7w4N2Ns37yDFq7

-----END DSA PRIV

ATE KEY-----

有时候

PEM

编码的东西并没有经过加密,只是简单进行了

BASE64

编码,下面是一个没有加密的证

书请求的例子: