如何獲取ssl證書


在前面的文章中,我們分析了SSL/TLS的一些基本概念和為什么他們安全,尤其提到了公鑰和私鑰的概念,還有一個很重要的文件,就是CA證書,關於CA證書的官方解釋,可以參考百科的解釋,這里我們可以簡單的認為,CA證書是一個網站的 二維碼,這個二維碼包括了服務器的一些信息,比如服務器所在的組織、支持的加密算法,還有更重要的公鑰信息。

X.509

我們在使用mbedtls時,會發現有X.509的名稱,在其他地方也會遇到這個概念,這里我們只做通俗的解釋:證書是有專門的認證機構頒發的,所以證書的格式有n多種是,而X.509是一種事實上的證書標准,很多應用程序都支持x.509標准規范。
了解更多x509證書知識

示例證書

我們看到的證書,一般是個文件,名字為 xxxx.crt或xxx.pem,這里我們以阿里雲IOT平台SDK中給示例程序使用的 證書舉例,直接查看證書內容,如下:

很顯然,除了發現字符對的很整齊外,我們是一臉懵逼,完全就是天書,一堆亂碼,那么如何解析這個證書內容呢? 前面講到證書都是有標准格式的(X.509),這個證書是對外發布的,包含公鑰的,所以就不存在保密而言,所以我們可以通過 生成證書的 openss 工具反向查看證書,命令如下:
如何把crt轉化成pem格式
openssl x509 -in ali_crt.pem -inform pem -noout -text
1
解析后的內容如下:

ubuntu@VM-0-17-ubuntu:/opt/ssl$ openssl x509 -in ali_crt.pem -inform pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
04:00:00:00:00:01:15:4b:5a:c3:94
Signature Algorithm: sha1WithRSAEncryption
Issuer: C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
Validity
Not Before: Sep 1 12:00:00 1998 GMT
Not After : Jan 28 12:00:00 2028 GMT
Subject: C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:da:0e:e6:99:8d:ce:a3:e3:4f:8a:7e:fb:f1:8b:
83:25:6b:ea:48:1f:f1:2a:b0:b9:95:11:04:bd:f0:
63:d1:e2:67:66:cf:1c:dd:cf:1b:48:2b:ee:8d:89:
8e:9a:af:29:80:65🆎e9:c7:2d:12:cb🆎1c:4c:
70:07:a1:3d:0a:30💿15:8d:4f:f8:dd:d4:8c:50:
15:1c:ef:50:ee:c4:2e:f7:fc:e9:52:f2:91:7d:e0:
6d:d5:35:30:8e:5e:43:73:f2:41:e9:d5:6a:e3:b2:
89:3a:56:39:38:6f:06:3c:88:69:5b:2a:4d:c5:a7:
54:b8:6c:89:cc:9b:f9:3c:ca:e5:fd:89:f5:12:3c:
92:78:96:d6:dc:74:6e:93:44:61:d1:8d:c7:46:b2:
75:0e:86:e8:19:8a:d5:6d:6c:d5:78:16:95:a2:e9:
c8:0a:38:eb:f2:24:13:4f:73:54:93:13:85:3a:1b:
bc:1e:34:b5:8b:05:8c:b9:77:8b:b1:db:1f:20:91:
ab:09:53:6e:90:ce:7b:37:74:b9:70:47:91:22:51:
63:16:79:ae:b1:ae:41:26:08:c8:19:2b:d1:46:aa:
48:d6:64:2a:d7:83:34:ff:2c:2a:c1:6c:19:43:4a:
07:85:e7:d3:7c:f6:21:68:ef:ea:f2:52:9f:7f:93:
90:cf
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Subject Key Identifier:
60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B
Signature Algorithm: sha1WithRSAEncryption
d6:73:e7:7c:4f:76:d0:8d:bf:ec:ba:a2:be:34:c5:28:32:b5:
7c:fc:6c:9c:2c:2b:bd:09:9e:53:bf:6b:5e:aa:11:48:b6:e5:
08:a3:b3:ca:3d:61:4d:d3:46:09:b3:3e:c3:a0:e3:63:55:1b:
f2:ba:ef:ad:39:e1:43:b9:38:a3:e6:2f:8a:26:3b:ef:a0:50:
56:f9:c6:0a:fd:38💿c4:0b:70:51:94:97:98:04:df:c3:5f:
94:d5:15:c9:14:41:9c:c4:5d:75:64:15:0d:ff:55:30:ec:86:
8f:ff:0d:ef:2c:b9:63:46:f6:aa:fc:df:bc:69:fd:2e:12:48:
64:9a:e0:95:f0:a6:ef:29:8f:01:b1:15:b5:0c:1d:a5:fe:69:
2c:69:24:78:1e:b3:a7:1c:71:62:ee:ca:c8:97:ac:17:5d:8a:
c2:f8:47:86:6e:2a:c4:56:31:95:d0:67:89:85:2b:f9:6c:a6:
5d:46:9d:0c:aa:82:e4:99:51:dd:70:b7:db:56:3d:61:e4:6a:
e1:5c:d6:f6:fe:3d🇩🇪41:cc:07:ae:63:52:bf:53:53:f4:2b:
e9:c7:fd:b6:f7:82:5f:85:d2:41:18:db:81:b3:04:1c:c5:1f:
a4:80:6f:15:20:c9🇩🇪0c:88:0a:1d:d6:66:55:e2:fc:48:c9:
29:26:69:e0
如何查看證書的內容

證書規范

我們就以上述解析后的證書為例,介紹一下證書包含的內容:

  • 版本號(Version Number): 規范的版本號,目前版本為3, 值為0x02 序列號(Serial Number):
  • 由發證機關分配的衛衣序列號,最大不超過20個字節,本例中為:04:00:00:00:00:01:15:4b:5a:c3:9
  • 簽名算法(Signature Algorithm): 數字證書鎖采用的算法,本例中使用的為:sha1WithRSAEncrypti
  • 頒發者(Issuer): 發證單位的標識信息,可以理解為發證單位的地址、名稱等其他信息,這里有一些簡稱: CN : country Name ST : state or provice name L : locality name O: organization name CN: common name, 這里CN是最重要的一個標識,代表了發證機關的 名稱,后面會介紹 有效期(Validity
  • 證書的有效期限,包括起止時間 主題(Subject): 證書擁有者的標識信息(Distinguished Name),與Issuer相似。
  • 公鑰信息(SubJect Public Key Info): 所保護的公鑰相關的信息: 公鑰算法 (Public Key
    Algorithm)公鑰采用的算法; 主體公鑰(Subject Unique Identifier):公鑰的內容。
    頒發者唯一號(Issuer Unique Identifier): 代表頒發者的唯一信息,僅2、3版本支持,可選;
    主體唯一號(Subject Unique Identifier): 代表擁有證書實體的唯一信息,僅2,3版本支持,可選
    擴展(Extensions,可選): 可選的一些擴展。中可能包括: Subject Key
    Identifier:實體的秘鑰標識符,區分實體的多對秘鑰; Basic Constraints:一指明是否屬於CA; Authority
    Key Identifier:證書頒發者的公鑰標識符; CRL Distribution Points: 撤銷文件的頒發地址;

Key Usage:證書的用途或功能信息。
此外,證書的頒發者還需要對證書內容利用自己的私鑰添加簽名, 以防止別人對證書的內容進行篡改。
openssl rsa keys/

Validity: 證書有效期,在調試的時候,驗證證書中,會驗證機器時間是否在證書有效期內,這個容易忽略,畢竟在一些嵌入式機器中,系統時鍾不太重要,所以可能不是真實的時鍾,這個時候,就會造成證書驗證失敗。
如何驗證證書過期

參考文章:
ssl安全證書知識
convert to PEM
Check SSL Certificate Chain Order with Openssl
Check SSL certificate
two way ssl authentication
create ssl certificate


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM