数字证书格式

PFX 或 P12 

指以pkcs#12格式存储的证书和相应私钥。PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件。

在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。 

PKCS#12通常采用PFX,P12作为文件扩展名,用于存放用户证书、crl、用户私钥以及证书链。pkcs12中的私钥是加密存放的。

 

思科是.p12,微软是.pfx

 

JKS

通常可以将Apache/OpenSSL使用的“KEY文件 + CRT文件”格式”转换为标准的Java Key Store(JKS)文件。JKS文件格式被广泛的应用在基于Java的WEB服务器、应用服务器、中间件。你可以将JKS文件导入到TOMCAT、 WEBLOGIC 等软件。

        查看jks格式的证书: keytool -list -v -keystore server.jks

 

CSR

证书请求文件(Certificate Signing Request)。生成 X509 数字证书前,一般先由用户提交证书申请文件,然后由 CA 来签发证书。大致过程如下(X509 证书申请的格式标准为 pkcs#10 和 rfc2314):

    用户生成自己的公私钥对;

    构造自己的证书申请文件,符合 PKCS#10 标准。该文件主要包括了用户信息、公钥以及一些可选的属性信息,并用自己的私钥给该内容签名;

    用户将证书申请文件提交给 CA;

    CA 验证签名,提取用户信息,并加上其他信息(比如颁发者等信息),用 CA 的私钥签发数字证书;

 

说明:

    数字证书(如x.509)是将用户(或其他实体)身份与公钥绑定的信息载体。

    一个合法的数字证书不仅要符合 X509 格式规范,还必须有 CA的签名。

    用户不仅有自己的数字证书,还必须有对应的私钥。

    X509v3数字证书主要包含的内容有:证书版本、证书序列号、签名算法、颁发者信息、有效时间、持有者信息、公钥信息、颁发者 ID、持有者 ID 和扩展项。

 

查看证书内容:

    openssl req -noout -text -in server.csr

    openssl req -noout -text -in server.csr -inform der

 

PEM

       Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式。Openssl 中的 PEM 文件一般包含如下信息:

 

内容类型:表明本文件存放的是什么信息内容,它的形式为“——-BEGIN XXXX ——”,与结尾的“——END XXXX——”对应。

 

头信息:表明数据是如果被处理后存放,openssl 中用的最多的是加密信息,比如加密算法以及初始化向量 iv。

 

信息体:为 BASE64 编码的数据。可以包括所有私钥(RSA 和 DSA)、公钥(RSA 和 DSA)和 (x509) 证书。它存储用 Base64 编码的 DER 格式数据,用 ascii 报头包围,因此适合系统之间的文本模式传输。

     查看PEM证书文件内容:

           openssl x509 -in tls-video.pem -inform pem -noout -text

 

DER

辨别编码规则 (DER) 可包含所有私钥、公钥和证书。它是大多数浏览器的缺省格式,并按 ASN1 DER 格式存储。它是无报头的 - PEM 是用文本报头包围的 DER。

二进制编码

 

CER  - 一般指使用DER格式的证书。

         查看cer证书:

                 openssl x509 -noout -text -in server.cer

 

CRT - 证书文件。可以是PEM格式。

 

KEY   - 一般指PEM格式的私钥文件。

 

查看KEY的内容:

     openssl rsa -noout -text -in server.key

     openssl rsa -noout -text -in server.key -inform der

 

X.509是一种证书格式,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:

PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码。Apache和*NIX服务器偏向于使用这种编码格式。

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

 DER - Distinguished Encoding Rules,打开看是二进制格式,不可读。Java和Windows服务器偏向于使用这种编码格式。

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

keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。

 

查看密钥仓库里的内容: 

keytool -list -rfc -keystore mykeystore.jks

 

        SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

 

        安全证书既包含了用于加密数据的密钥,又包含了用于证实身份的数字签名。安全证书采用公钥加密技术。公钥加密是指使用一对非对称的密钥进行加密或解密。每一对密钥由公钥和私钥组成。用公钥加密的数据只能够被私钥解密。反过来,使用私钥加密的数据只能被公钥解密。

 

证书格式转换:

    crt > cer

        openssl x509 -inform der -in client.crt -out client.cer

    pem > cer:

        openssl x509 -in client.pem -out client.cer

    pem > p12:

        openssl pkcs12 -export -in server.pem -out server.p12

    cer > jks:

        keytool -importcert -file client.cer -keystore client.jks -storepass 123456

    crt > jks:

        keytool -importcert -alias CA -file CA.crt -keystore CA.jks -storepass 123456

    crt > der:

        openssl x509 -in server.crt -out server.der -outform DER

猜你喜欢

转载自chenjumin.iteye.com/blog/2335651