一、文件编码

PEM (Privacy Enhancement Message),定义见

结构组成 == {header} body {tail}

示例

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMYfnvWtC8Id5bPKae5yXSxQTt

+Zpul6AnnZWfI2TtIarvjHBFUtXRo96y7hoL4VWOPKGCsRqMFDkrbeUjRrx8iL91

4/srnyf6sh9c8Zk04xEOpK1ypvBz+Ks4uZObtjnnitf0NBGdjMKxveTq+VE7BWUI

yQjtQ8mbDOsiLLvh7wIDAQAB

-----END PUBLIC KEY-----

DER (Distinguished Encoding Rules) , 定义见

编码方式 == DER uses a pattern of type-length-value triplets

二、公钥标准

PKCS (Public Key Cryptography Standards),定义见

常见PKCS标准

三、RSA 密钥

RSA 公钥编码

PublicKey-PKCS#1-PEM

-----BEGIN RSA PUBLIC KEY-----

BASE64 ENCODED DATA

-----END RSA PUBLIC KEY-----

PublicKey-PKCS#1-DER

RSAPublicKey ::= SEQUENCE {

modulus INTEGER, -- n

publicExponent INTEGER -- e

}

PublicKey-PKCS#8-PEM

-----BEGIN PUBLIC KEY-----

BASE64 ENCODED DATA

-----END PUBLIC KEY-----

PublicKey-PKCS#8-DER

PublicKeyInfo ::= SEQUENCE {

algorithm AlgorithmIdentifier,

PublicKey BIT STRING

}

AlgorithmIdentifier ::= SEQUENCE {

algorithm OBJECT IDENTIFIER,

parameters ANY DEFINED BY algorithm OPTIONAL

}

对于RSA公钥来说,OID就是(1.2.840.113549.1.1.1)

RSA 私钥编码

PrivateKey-PKCS#1-PEM

-----BEGIN RSA PRIVATE KEY-----

BASE64 ENCODED DATA

-----END RSA PRIVATE KEY-----

PrivateKey-PKCS#1-DER

RSAPrivateKey ::= SEQUENCE {

version Version,

modulus INTEGER, -- n

publicExponent INTEGER, -- e

privateExponent INTEGER, -- d

prime1 INTEGER, -- p

prime2 INTEGER, -- q

exponent1 INTEGER, -- d mod (p-1)

exponent2 INTEGER, -- d mod (q-1)

coefficient INTEGER, -- (inverse of q) mod p

otherPrimeInfos OtherPrimeInfos OPTIONAL

}

PrivateKey-PKCS#8-PEM

-----BEGIN PRIVATE KEY-----

BASE64 ENCODED DATA

-----END PRIVATE KEY-----

PrivateKey-PKCS#8-DER

PrivateKeyInfo ::= SEQUENCE {

version Version,

algorithm AlgorithmIdentifier,

PrivateKey OCTET STRING

}

AlgorithmIdentifier ::= SEQUENCE {

algorithm OBJECT IDENTIFIER,

parameters ANY DEFINED BY algorithm OPTIONAL

}

私钥文件可采用加密方式存储,加密后的格式:

EncryptedPrivateKey-PKCS#8-PEM

-----BEGIN ENCRYPTED PRIVATE KEY-----

BASE64 ENCODED DATA

-----END ENCRYPTED PRIVATE KEY-----

Encrypted-PrivateKey-PKCS#8-DER

EncryptedPrivateKeyInfo ::= SEQUENCE {

encryptionAlgorithm EncryptionAlgorithmIdentifier,

encryptedData EncryptedData

}

EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier

EncryptedData ::= OCTET STRING

四、证书

X.509 证书,

证书结构

Certificate

Version Number

Serial Number

Signature Algorithm ID

Issuer Name

Validity period

Not Before

Not After

Subject name

Subject Public Key Info

Public Key Algorithm

Subject Public Key

Issuer Unique Identifier (optional)

Subject Unique Identifier (optional)

Extensions (optional)

...

Certificate Signature Algorithm

Certificate Signature

主要字段

扩展字段

​​样例-维基百科证书

Certificate:

Data:

Version: 3 (0x2)

Serial Number:

10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6

Signature Algorithm: sha256WithRSAEncryption

Issuer: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2

Validity

Not Before: Nov 21 08:00:00 2016 GMT

Not After : Nov 22 07:59:59 2017 GMT

Subject: C=US, ST=California, L=San Francisco, O=Wikimedia Foundation, Inc., CN=*.wikipedia.org

Subject Public Key Info:

Public Key Algorithm: id-ecPublicKey

Public-Key: (256 bit)

pub:

04:c9:22:69:31:8a:d6:6c:ea:da:c3:7f:2c:ac:a5:

af:c0:02:ea:81:cb:65:b9:fd:0c:6d:46:5b:c9:1e:

ed:b2:ac:2a:1b:4a:ec:80:7b:e7:1a:51:e0:df:f7:

c7:4a:20:7b:91:4b:20:07:21:ce:cf:68:65:8c:c6:

9d:3b:ef:d5:c1

ASN1 OID: prime256v1

X509v3 extensions:

X509v3 Key Usage: critical

Digital Signature, Key Agreement

Authority Information Access:

CA Issuers - URI:http://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt

OCSP - URI:http://ocsp2.globalsign.com/gsorganizationvalsha2g2

X509v3 Certificate Policies:

Policy: 1.3.6.1.4.1.4146.1.20

CPS: https://www.globalsign.com/repository/

Policy: 2.23.140.1.2.2

X509v3 Basic Constraints:

CA:FALSE

X509v3 CRL Distribution Points:

Full Name:

URI:http://crl.globalsign.com/gs/gsorganizationvalsha2g2.crl

X509v3 Subject Alternative Name:

DNS:*.wikipedia.org, DNS:*.m.mediawiki.org, DNS:*.m.wikibooks.org, DNS:*.m.wikidata.org, DNS:*.m.wikimedia.org, DNS:*.m.wikimediafoundation.org, DNS:*.m.wikinews.org, DNS:*.m.wikipedia.org, DNS:*.m.wikiquote.org, DNS:*.m.wikisource.org, DNS:*.m.wikiversity.org, DNS:*.m.wikivoyage.org, DNS:*.m.wiktionary.org, DNS:*.mediawiki.org, DNS:*.planet.wikimedia.org, DNS:*.wikibooks.org, DNS:*.wikidata.org, DNS:*.wikimedia.org, DNS:*.wikimediafoundation.org, DNS:*.wikinews.org, DNS:*.wikiquote.org, DNS:*.wikisource.org, DNS:*.wikiversity.org, DNS:*.wikivoyage.org, DNS:*.wiktionary.org, DNS:*.wmfusercontent.org, DNS:*.zero.wikipedia.org, DNS:mediawiki.org, DNS:w.wiki, DNS:wikibooks.org, DNS:wikidata.org, DNS:wikimedia.org, DNS:wikimediafoundation.org, DNS:wikinews.org, DNS:wikiquote.org, DNS:wikisource.org, DNS:wikiversity.org, DNS:wikivoyage.org, DNS:wiktionary.org, DNS:wmfusercontent.org, DNS:wikipedia.org

X509v3 Extended Key Usage:

TLS Web Server Authentication, TLS Web Client Authentication

X509v3 Subject Key Identifier:

28:2A:26:2A:57:8B:3B:CE:B4:D6:AB:54:EF:D7:38:21:2C:49:5C:36

X509v3 Authority Key Identifier:

keyid:96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C

Signature Algorithm: sha256WithRSAEncryption

8b:c3:ed:d1:9d:39:6f:af:40:72:bd:1e:18:5e:30:54:23:35:

66:5e:62:d5:01:e2:63:47:70:cb:6d:1b:17:b0:f5:4d:11:e4:

ad:94:51:c5:5e:72:03:b0:d5:ab:18:eb:b5:3a:08:a8:73:95:

f3:7f:41:1a:28:7b:45:7c:83:2e:d3:14:95:d8:d5:d1:5f:99:

4b:0c:f4:c3:9b:0b:4f:e9:49:f4:2c:b5:ae:c3:1d:7d:2a:80:

f6:70:29:4c:0c:e6:e0:cb:88:8a:8a:02:ee:a5:d1:73:c2:93:

58:24:ff:43:1b:e3:fd:7b:aa:f0:15:0c:60:52:8f:21:7d:87:

3a:14:fa:81:41:00:60:4f:96:9a:62:94:58:de:cb:15:5c:3c:

f4:c1:4d:33:e3:ff:39:fe:28:fb:b0:41:3e:d2:8a:11:d1:06:

01:28:74:7d:71:d4:2a:ef:1f:e3:25:4b:2d:f0:66:ef:26:fb:

4c:f0:81:85:bb:1a:99:06:c9:37:87:de:8d:49:f7:00:91:a9:

42:31:4a:b9:40:a0:7d:4f:4f:a6:ea:d4:58:07:3c:01:e0:1a:

53:54:66:e1:a3:7e:30:cd:3b:f8:69:59:a3:48:92:48:e1:9e:

63:ab:08:70:91:f2:48:d2:83:4b:98:06:fa:fd:bc:99:02:da:

9c:98:b1:a3

证书格式PKI ITU-T X509标准,传统标准(.der .pem .cer .crt),仅包含公钥

PKCS#7 加密消息语法标准(.p7b .p7c .spc .p7r),p7b/p7c/spc 包含了证书链,p7r是证书请求回复(非证书)

PKCS#10 证书请求标准(.p10),.p10是证书请求文件,与.csr文件类似

PKCS#12 个人信息交换标准(.pfx *.p12),包含公钥和私钥,需密码保护

编码形式X.509 DER(Distinguished Encoding Rules)编码,后缀为:.der .cer .crt

X.509 BASE64编码(PEM格式),后缀为:.pem .cer .crt

X.509CRT-PEM

-----BEGIN CERTIFICATE-----

BASE64 ENCODED DATA

-----END CERTIFICATE-----

关键特性编码形式:二进制还是ASCII

是否包含公钥、私钥

包含一个还是多个证书

是否支持密码保护(针对当前证书)

参考文档

作者:美码师

pem格式证书编码 x509_公钥证书编码解读相关推荐

  1. 支付宝RSA2公钥证书生成办法

    支付宝RSA2公钥证书生成 前言 支付宝新的转账接口例如转账"alipay.fund.trans.uni.transfer"接口已经在推新的公钥证书模式,由支付宝作为CA帮我们的公 ...

  2. 支付宝支付-升级公钥证书

    原因 项目需要实现自动提现到支付宝,涉及到资金类支出接口 ,所以需要升级密钥为公钥证书: 参考文档:支付宝密钥相关文档 准备证书 生成csr时保存下来的2个.txt(应用公钥没啥用,应用私钥需要妥善保 ...

  3. 学习记录572@公钥证书与数字签名概述

    公钥体系用于认证数据概述及其缺陷 RSA和ECC公钥密码体系除了用于给密钥加密以便传输之外,也可用于认证数据的出处,维护数据的完整性和不可否认性.如果甲方需要向乙方证明数据M的确出于甲方,甲可用私钥将 ...

  4. sm2证书生成(双证书)

    国密双证书 双证书:包括签名证书和加密证书 双证书需要用硬件加密机生成,用gmssl命令无法生成 cfca下载双证书 1.访问https://cstest.cfca.com.cn/ 2.选:Web服务 ...

  5. pem格式证书编码 x509_证书编码格式

    一.证书编码格式 1.DER(Distinguished Encoding Rules) DER是二进制格式,不可读.查看DER格式证书的信息 openssl x509 -in certificate ...

  6. 【Http】加解密 生成 X.509格式,DER编码,后缀名.cer 加密公钥证书

    1. 背景 因为遇到了问题:参考 [Https]keytool 导入证书到 本地 Exception: Input not an X.509 certificate 然后就想查查这个怎么解决搜到了如下 ...

  7. android 使用crt/cer/pem格式的公钥证书

    问题:android在网络各种教程里面,都是只有BKS的格式,但是一般后端给我们的公钥证书都是crt/cer/pem格式的,这种时候,常用的做法就是用keytools转换成bks格式.    个人感觉 ...

  8. pfx私有证书转cer公钥格式证书

    pfx证书含公私钥,cer证书为公钥,想从pfx证书中导出其对应的公钥cer. 1.操作 需要借助openssl pkcs12,linux服务器上一般都自带了. openssl pkcs12 -nod ...

  9. 使用openssl 转换pkcs12证书为pem格式

    使用openssl 转换pkcs12证书为pem格式 pkcs证书一般是.p12或.pfx格式,一般会有证书密码. 使用3步将证书导出: 第一步先导出为key文件 举例输出key文件为priv.p12 ...

最新文章

  1. 2021-2027年中国一体化预制泵站行业研究及前瞻分析报告
  2. 金融数据分析(四)-------矩,偏度,峰度
  3. 220V双向TVS二极管,如何正确选型?
  4. android-support安装不,导入android.support无法解析
  5. OOo-MySpell 一个C++的拼写语法检查开源项目
  6. php new static,PHP面向对象中new self( )和 new static( ) 的区别
  7. 关于Apache Tomcat解决localhost was unable to start within 45 seconds
  8. 蓝桥杯 ALGO-5 算法训练 最短路
  9. Linux命令解释之groupadd,groupdel,groupmod,groupmems
  10. 【Docker】04 Docker镜像讲解
  11. 理解 GBK、Unicode、utf-8
  12. linux aufs,UnionFS有什么用?AUFS的一些特性
  13. 使用BootStrap.编写网页
  14. 中国移动,电信,联通,铁通,网通的区别与联系
  15. Linux上silk微信语音转换成mp3格式
  16. Pycharm社区版下载与安装教程
  17. 配置gpgpu-sim——基于ubuntu12.04LTS
  18. 夕颜:利用热点事件如何赚钱?
  19. matlab、python打字变红,格式错误问题
  20. 【华为云技术分享】如何将90%的代码自动迁移到鲲鹏平台上

热门文章

  1. 在C#中利用Keep-Alive处理Socket网络异常断开的方法
  2. Asp.net 中使用单独类文件
  3. 23种设计模式C++实现UML+源码汇总
  4. 「 每日一练,快乐水题 」1984. 学生分数的最小差值
  5. 聚簇索引、非聚簇索引、普通索引、唯一索引
  6. Dalvik解释器源码到VMP分析
  7. mach-o格式分析
  8. JZOJ 5939. 【NOIP2018模拟10.30】阻击计划
  9. JZOJ 3617. 【ZJOI2014】力
  10. JZOJ 5275. 水管