Certificates

X509證書

  • August 9, 2020

我正在研究 X509 證書結構,這裡是一個用於生成證書的 OpenSSL 配置文件。(“sth”只是意味著實際的字元串被刪除)

[ req ]
prompt                 = no
distinguished_name     = req_distinguished_name
x509_extensions        = v3_ca

[ req_distinguished_name ]
countryName            = sth
localityName           = sth
organizationalUnitName = sth
commonName             = sth
emailAddress           = sth

[ v3_ca ]
basicConstraints       = critical, CA:TRUE, pathlen:1
keyUsage               = critical, keyCertSign

以下是我的問題:

  • req_distinguished_name 是什麼意思,它是如何使用的?
  • basicContraints 中的 critical 和 pathlen 是什麼意思?

basicConstraints = critical, CA:TRUE, pathlen:1

  • keyUsage 中的關鍵是什麼意思?

所有答案都可以在定義 X.509 證書格式的RFC 5280中找到。


1. 是什麼req_distinguished_name意思,如何使用?

看起來 OpenSSL 正在以.ini格式吐出這個,所以我猜

distinguished_name     = req_distinguished_name

意味著可以在[req_distinguished_name]下面的部分中找到所需的專有名稱資訊。相似地,

x509_extensions        = v3_ca

意味著可以在該[v3_ca]部分中找到擴展內容。

在 X.509 中,專有名稱 (DN) 是持有此證書的個人或伺服器的唯一標識符。DN 的結構與 URL 中的域名非常相似,以國家程式碼開頭,一直到人或伺服器的名稱。


2. basicContraints 中的 critical 和 pathlen 是什麼意思?basicConstraints = critical, CA:TRUE, pathlen:1

RFC 5280 第 4.2.1.9 節。基本約束說:

基本約束擴展標識證書的主題是否為 CA,以及包含此證書的有效證書路徑的最大深度。

所以CA:TRUE, pathlen:1意味著這是一個自簽名的根 CA,它只能頒發最終使用者證書而不是從屬 CA,因為他們頒發的任何證書的 pathlen > 1。


3. X.509證書中的critical是什麼意思?

RFC 5280 第 4.2 節。證書擴展說:

證書中的每個擴展都被指定為關鍵或非關鍵。如果使用證書的系統遇到它無法辨識的關鍵擴展或包含它無法處理的資訊的關鍵擴展,則必須拒絕證書。一個非關鍵擴展如果不被辨識可以被忽略,但如果它被辨識則必須被處理。

所以基本上,critical意味著這個數據中的錯誤應該被認為是致命的,非關鍵意味著可以忽略錯誤。

引用自:https://crypto.stackexchange.com/questions/35608