我有一個 X509 PEM 檔案,其內容如下
-----BEGIN CERTIFICATE-----
MIIDaaaaaaa==
-----END CERTIFICATE-----
獲取它的通用名(CN,理解為可以使用的url)。如紅色方塊所示,現代瀏覽器可以從 PEM 檔案中讀取 CN。但是,我沒有從openssl x509 --help.

uj5u.com熱心網友回復:
OpenSSL 的命令列工具不提供僅從證書的主題專有名稱中提取公用名的方法。
您必須以某種方式自己決議文本。
根據OpenSSL'xx509手冊頁,您可以使用它-subject來獲取主題的專有名稱:
選項
輸入、輸出和通用選項
...
-主題
輸出主題名稱。
...
但是您只需要該 DN 中的通用名稱。還有
-nameopt 選項
確定如何顯示主題或頒發者名稱的選項。option 引數可以是單個選項,也可以是逗號分隔的多個選項。或者,
-nameopt可以多次使用該開關來設定多個選項。有關詳細資訊,請參閱名稱選項部分。
從那個NAME OPTIONS部分有
多行
多行格式。它等效于 esc_ctrl、esc_msb、sep_multiline、space_eq、lname 和 align。
跨多行拆分主題 DN 組件使自動決議變得微不足道。
使用
openssl x509 -in filnname.pem -noout -subject -nameopt multiline
會產生像這樣的輸出
subject=
commonName = CommonName
.
.
.
organizationName = OrgName
countryName = Country
如果您在 Linux 上運行,則可以處理該文本輸出:
openssl x509 -in file.pem -noout -subject -nameopt multiline |\
grep commonName | awk '{ print $3 }'
如果您需要處理公用名中的空格:
openssl x509 -in file.pem -noout -subject -nameopt multiline |\
grep commonName | awk '{ $1=$2=""; print $3 }'
不幸的是,這將用一個空格替換公用名中多個空格的每個實體。通常,在證書公用名中找不到空格,但它們是可能的。
而“CN,理解為可以使用的url”是不正確的。主題通用名稱可以是 URL,但 CN 在驗證網站中的使用已被棄用 20 多年:
盡管使用通用名稱是現有的做法,但它已被棄用,并且鼓勵證書頒發機構使用 dNSName 代替。
使用主題替代名稱:
如前所述,如果提供的識別符號包括 DNS-ID、SRV-ID、URI-ID 或客戶端支持的任何特定于應用程式的識別符號型別,則客戶端不得為 CN-ID 的參考識別符號尋求匹配。
大約五年來,Chrome 和 Firefox 等瀏覽器在進行證書驗證時一直忽略主題通用名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/520785.html
