大家好,欢迎来到IT知识分享网。
文章目录
1 背景
之前接触过RSA、SHA、MD5等加密/摘要算法,但是对X509证书缺乏整体认知,这里预期通过学习X509概念和应用,做一个整理的理解。
目标:
- X509是什么、格式
- X509的历史和版本、以及发布机构
- X509应用场景、自建X509证书(openssl)
- X509、RSA、SHA等之间的关系
未完成的问题:
- 浏览器证书都是X509格式的吗?有没有其他格式的?
- 内置的根证书列表是如何验证CA的?
2 介绍
X509概念:百度百科
- X.509 是密码学里公钥证书的格式标准。
- X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)
- 事实上X.509认证指的是RFC5280里定义的X.509 v3,包括对IETF的PKIX证书和证书吊销列表,通常也称为公钥基础设施。(2008年)
- X.509 证书己应用在包括TLS/SSL(WWW万维网安全浏览的基石)在内的众多 Internet协议里.同时它也用在很多非在线应用场景里,比如电子签名服务。
- TLS介绍
- RFC5280定义
- 应用场景:HTTPS、MQTTS
3 X509证书
3.1 证书组成结构
证书组成结构标准用ASN.1(一种标准的语言)来进行描述. X.509 v3数字证书结构如下:
- 版本号
- 序列号
- 签名算法
- 签名哈希算法
- 颁发者
- 此日期前无效
- 此日期后无效
- 使用者
- 公钥:算法+内容
- 公钥参数
3.2 证书编码格式和扩展名
原文+证书格式互转:
X509数字证书学习
3.2.1 编码格式
pem编码
文本格式,内容是base64编码。可以直接打开查看。
证书文件
证书请求文件
der编码
二进制格式
3.2.2 扩展名
- pem:采用pem编码的数字证书。
- der:采用der编码的数字证书。
- crt:可能是pem编码,也可能是der编码。但大多数情况下为pem编码的数字证书。
- cer:可能是pem编码,也可能是der编码。但大多数情况下为der编码的数字证书。
- key:用来存放公钥或私钥。
- csr:证书请求文件。
- pfx:PKCS #12,是公钥加密标准(Public Key Cryptography Standards)系列的一种。简单理解就是将私钥和数字证书打包在一起了。
4 浏览器证书导出(示例)
以IE/360极速浏览器为例,选择工具 – Internet选项 – 这里选择受信任的根证书颁发机构 – 这里选择第第一个:
4.1 查看证书详细信息
双击 – 选择详细信息
4.2 导出证书
导出证书,这里分别导出DER编码和Base64编码格式的证书,导出文件分别命名,后缀均是.cer格式。
Base64格式的证书内容如下:
-----BEGIN CERTIFICATE----- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVGEwJHQjEb MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVHDAdTYWxmb3JkMRow GAYDVKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe 3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE-----
DER格式的证书,通过文本工具打开是乱码,这里通过UE等工具16进制打开:
UltraEdit只复制16进制:https://jingyan.baidu.com/article/4ae03de31a95893eff9e6b31.html
00000000h: 30 82 04 32 30 82 03 1A A0 03 02 01 02 02 01 01 ; 0?20?.?...... 00000010h: 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 30 ; 0...*咹嗺......0 00000020h: 7B 31 0B 30 09 06 03 55 04 06 13 02 47 42 31 1B ; {1.0...U....GB1. 00000030h: 30 19 06 03 55 04 08 0C 12 47 72 65 61 74 65 72 ; 0...U....Greater 00000040h: 20 4D 61 6E 63 68 65 73 74 65 72 31 10 30 0E 06 ; Manchester1.0.. 00000050h: 03 55 04 07 0C 07 53 61 6C 66 6F 72 64 31 1A 30 ; .U....Salford1.0 00000060h: 18 06 03 55 04 0A 0C 11 43 6F 6D 6F 64 6F 20 43 ; ...U....Comodo C 00000070h: 41 20 4C 69 6D 69 74 65 64 31 21 30 1F 06 03 55 ; A Limited1!0...U 00000080h: 04 03 0C 18 41 41 41 20 43 65 72 74 69 66 69 63 ; ....AAA Certific 00000090h: 61 74 65 20 53 65 72 76 69 63 65 73 30 1E 17 0D ; ate Services0... 000000a0h: 30 34 30 31 30 31 30 30 30 30 30 30 5A 17 0D 32 ; 0Z..2 000000b0h: 38 31 32 33 31 32 33 35 39 35 39 5A 30 7B 31 0B ; Z0{1. 000000c0h: 30 09 06 03 55 04 06 13 02 47 42 31 1B 30 19 06 ; 0...U....GB1.0.. 000000d0h: 03 55 04 08 0C 12 47 72 65 61 74 65 72 20 4D 61 ; .U....Greater Ma 000000e0h: 6E 63 68 65 73 74 65 72 31 10 30 0E 06 03 55 04 ; nchester1.0...U. 000000f0h: 07 0C 07 53 61 6C 66 6F 72 64 31 1A 30 18 06 03 ; ...Salford1.0... 00000100h: 55 04 0A 0C 11 43 6F 6D 6F 64 6F 20 43 41 20 4C ; U....Comodo CA L 00000110h: 69 6D 69 74 65 64 31 21 30 1F 06 03 55 04 03 0C ; imited1!0...U... 00000120h: 18 41 41 41 20 43 65 72 74 69 66 69 63 61 74 65 ; .AAA Certificate 00000130h: 20 53 65 72 76 69 63 65 73 30 82 01 22 30 0D 06 ; Services0?"0.. 00000140h: 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 82 01 0F ; .*咹嗺.......?. 00000150h: 00 30 82 01 0A 02 82 01 01 00 BE 40 9D F4 6E E1 ; .0?..?..継濘n? 00000160h: EA 76 87 1C 4D 45 44 8E BE 46 C8 83 06 9D C1 2A ; 陃?MED幘F葍.澚* 00000170h: FE 18 1F 8E E4 02 FA F3 AB 5D 50 8A 16 31 0B 9A ; ?.庝.玗P?1.? 00000180h: 06 D0 C5 70 22 CD 49 2D 54 63 CC B6 6E 68 46 0B ; .信p"虸-Tc潭nhF. 00000190h: 53 EA CB 4C 24 C0 BC 72 4E EA F1 15 AE F4 54 9A ; S晁L$兰rN犟.T? 000001a0h: 12 0A C3 7A B2 33 60 E2 DA 89 55 F3 22 58 F3 DE ; ..脄?`廒塙?X筠 000001b0h: DC CF EF 83 86 A2 8C 94 4F 9F 68 F2 98 90 46 84 ; 芟飪啟寯O焗驑怓? 000001c0h: 27 C7 76 BF E3 CC 35 2C 8B 5E 07 64 65 82 C0 48 ; '莢裤?,媈.de偫H 000001d0h: B0 A8 91 F9 61 9F 76 20 50 A8 91 C7 66 B5 EB 78 ; 皑戼a焩 P☉莊惦x 000001e0h: 62 03 56 F0 8A 1A 13 EA 31 A3 1E A0 99 FD 38 F6 ; b.V饖..??牂?? 000001f0h: F6 27 32 58 6F 07 F5 6B B8 FB 14 2B AF B7 AA CC ; ?2Xo.鮧耕.+ 00000200h: D6 63 5F 73 8C DA 05 99 A8 38 A8 CB 17 78 36 51 ; 謈_s屭.櫒8ㄋ.x6Q 00000210h: AC E9 9E F4 78 3A 8D CF 0F D9 42 E2 98 0C AB 2F ; 烎x:嵪.貰鈽.? 00000220h: 9F 0E 01 DE EF 9F 99 49 F1 2D DF AC 74 4D 1B 98 ; ?.揎煓I?攥tM.? 00000230h: B5 47 C5 E5 29 D1 F9 90 18 C7 62 9C BE 83 C7 26 ; 礕佩)样?莃溇兦& 00000240h: 7B 3E 8A 25 C7 C0 DD 9D E6 35 68 10 20 9D 8F D8 ; {>?抢轁?h. 潖? 00000250h: DE D2 C3 84 9C 0D 5E E8 2F C9 02 03 01 00 01 A3 ; 抟脛?^??....? 00000260h: 81 C0 30 81 BD 30 1D 06 03 55 1D 0E 04 16 04 14 ; 伬0伣0...U...... 00000270h: A0 11 0A 23 3E 96 F1 07 EC E2 AF 29 EF 82 A5 7F ; ?.#>栺.焘?飩? 00000280h: D0 30 A4 B4 30 0E 06 03 55 1D 0F 01 01 FF 04 04 ; ?ご0...U...... 00000290h: 03 02 01 06 30 0F 06 03 55 1D 13 01 01 FF 04 05 ; ....0...U...... 000002a0h: 30 03 01 01 FF 30 7B 06 03 55 1D 1F 04 74 30 72 ; 0...0{..U...t0r 000002b0h: 30 38 A0 36 A0 34 86 32 68 74 74 70 3A 2F 2F 63 ; 08???http://c 000002c0h: 72 6C 2E 63 6F 6D 6F 64 6F 63 61 2E 63 6F 6D 2F ; rl.comodoca.com/ 000002d0h: 41 41 41 43 65 72 74 69 66 69 63 61 74 65 53 65 ; AAACertificateSe 000002e0h: 72 76 69 63 65 73 2E 63 72 6C 30 36 A0 34 A0 32 ; rvices.crl06?? 000002f0h: 86 30 68 74 74 70 3A 2F 2F 63 72 6C 2E 63 6F 6D ; ?http://crl.com 00000300h: 6F 64 6F 2E 6E 65 74 2F 41 41 41 43 65 72 74 69 ; odo.net/AAACerti 00000310h: 66 69 63 61 74 65 53 65 72 76 69 63 65 73 2E 63 ; ficateServices.c 00000320h: 72 6C 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 ; rl0...*咹嗺..... 00000330h: 00 03 82 01 01 00 08 56 FC 02 F0 9B E8 FF A4 FA ; ..?...V?饹? 00000340h: D6 7B C6 44 80 CE 4F C4 C5 F6 00 58 CC A6 B6 BC ; 謠艱€蜲呐?X苔都 00000350h: 14 49 68 04 76 E8 E6 EE 5D EC 02 0F 60 D6 8D 50 ; .Ih.v桄頬?.`謲P 00000360h: 18 4F 26 4E 01 E3 E6 B0 A5 EE BF BC 74 54 41 BF ; .O&N.沔哎羁紅TA? 00000370h: FD FC 12 B8 C7 4F 5A F4 89 60 05 7F 60 B7 05 4A ; .盖OZ魤`.`?J 00000380h: F3 F6 F1 C2 BF C4 B9 74 86 B6 2D 7D 6B CC D2 F3 ; 篥衤磕箃喍-}k桃? 00000390h: 46 DD 2F C6 E0 6A C3 C3 34 03 2C 7D 96 DD 5A C2 ; F?凄j妹4.,}栞Z? 000003a0h: 0E A7 0A 99 C1 05 8B AB 0C 2F F3 5C 3A CF 6C 37 ; .?櫫.嫬./骪:蟣7 000003b0h: 55 09 87 DE 53 40 6C 58 EF FC B6 AB 65 6E 04 F6 ; U.囖S@lX稂东en.? 000003c0h: 1B DC 3C E0 5A 15 C6 9E D9 F1 59 48 30 21 65 03 ; .?郱.茷亳YH0!e. 000003d0h: 6C EC E9 21 73 EC 9B 03 A1 E0 37 AD A0 15 18 8F ; l扉!s鞗.∴7瓲..? 000003e0h: FA BA 02 CE A7 2C A9 10 13 2C D4 E5 08 26 AB 22 ; .围,?.,藻.&? 000003f0h: 97 60 F8 90 5E 74 D4 A2 9A 53 BD F2 A9 68 E0 A2 ; 梎鴲^t寓歋津﹉啖 00000400h: 6E C2 D7 6C B1 A3 0F 9E BF EB 68 E7 56 F2 AE F2 ; n伦l保.灴雋鏥虍? 00000410h: E3 2B 38 3A 09 81 B5 6B 85 D7 BE 2D ED 3F 1A B7 ; ?8:.伒k呑??.? 00000420h: B2 63 E2 F5 62 2C 82 D4 6A 00 41 50 F1 39 83 9F ; 瞔怩b,傇j.AP?儫 00000430h: 95 E9 36 96 98 6E ; 曢6枠n
注意:
- DER编码格式只有纯内容,没有—–BEGIN CERTIFICATE—–
- 上面base64编码的部分,通过base64解码后的16进制和上面结果一致。
5 参考资料
六、openssl 和 证书
在使用OpenSSL查看证书时,可以通过特定的命令来确定证书是采用PKCS#1格式还是PKCS#8格式。以下是一些步骤和命令,帮助你识别证书的格式:
- 查看证书信息:
使用以下命令可以查看证书的详细信息,包括它的格式:openssl x509 -in certificate.pem -text -noout这里
certificate.pem是你的证书文件。这个命令会输出证书的所有文本信息,包括它的公钥部分。 - 检查公钥部分:
在输出的信息中,你需要查看公钥部分。如果是PKCS#1格式的证书,你会看到类似Subject Public Key Info的部分,其中包含了公钥的算法和公钥本身。 - 检查私钥格式:
如果你有私钥文件,可以使用以下命令来检查它是PKCS#1还是PKCS#8格式:openssl pkcs8 -inform PEM -in private_key.pem -topk8 -nocrypt这里
private_key.pem是你的私钥文件。如果私钥是PKCS#1格式的,这个命令会尝试将其转换为PKCS#8格式,并且不会提示输入密码(因为-nocrypt选项指定了不加密)。如果转换成功,那么原始私钥很可能是PKCS#1格式的。 - 转换私钥格式:
如果你需要将PKCS#1格式的私钥转换为PKCS#8格式,可以使用以下命令:openssl rsa -in rsa_private_key.pem -out pkcs8_private_key.pem这将创建一个新的PKCS#8格式的私钥文件
pkcs8_private_key.pem。 - 检查证书链:
如果你有一个证书链,你可以使用以下命令来检查每个证书的格式:openssl x509 -in intermediate.pem -text -noout对于证书链中的每个证书,重复上述步骤。
通过上述步骤,你应该能够确定你的证书是PKCS#1格式还是PKCS#8格式。需要注意的是,PKCS#1和PKCS#8是两种不同的私钥格式,而证书(公钥证书)通常不涉及这两种格式的区别,因为它们是公钥的表现形式。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/109691.html


