Openssl

如何從 SSL 證書中提取序列號

  • February 7, 2020

我想知道從 PEM 格式的 SSL 證書中提取序列號的最佳方法是什麼。

之後,我想以以下格式格式化證書,hexhex:hexhex:...:hexhex 例如,如果我的 SSL 證書的十六進制序列號是

0123456709AB

輸出應該是

01:23:45:67:09:AB

出於偏好,我想使用帶有 x509 選項的 openssl 使用單行 UNIX 命令來完成此操作

嘗試:

openssl x509 -noout -serial -in cert.pem | cut -d'=' -f2 | sed 's/../&:/g;s/:$//'

openssl x509 -noout -serial -in cert.pem將輸出證書的序列號,但格式為serial=0123456709AB.

因此,它通過管道cut -d'=' -f2將等號上的輸出拆分並輸出第二部分 - 0123456709AB

即發送到sed. 該sed命令的第一部分s/../&:/g將字元串每兩個字元 ( ..) 拆分一次,並插入一個冒號 ( :)。這導致01:23:45:67:89:AB:(注意末尾的冒號)。

命令的第二部分sed( s/:$//) 在輸出末尾搜尋冒號並將其替換為空字元串,從而產生所需的輸出。


或者只有一個openssl答案sed

openssl x509 -noout -serial -in test2.crt |  sed 's/.*=//g;s/../&:/g;s/:$//'

s/.*=//g在命令開頭的添加sed替換了cut第一個版本中的。

引用自:https://unix.stackexchange.com/questions/533194