Openssl

從 p7s 中提取時間戳(簽名文件)

  • December 17, 2020

我正在尋找如何從 p7s 文件中提取時間戳資訊(文件簽名時)。

我目前正在通過 asn1parse 提取時間戳並使用字元串 (id-smime-aa-timeStampToken)

我解析的文件中的內容如下所示。

19120:d=7  hl=2 l=  11 prim: OBJECT            :id-smime-aa-timeStampToken
19133:d=7  hl=4 l=2165 cons: SET               
19137:d=8  hl=4 l=2161 cons: SEQUENCE          

我正在從偏移量 19137 中提取長度為 2165 的數據(我假設它與偏移量 hl=4 l=2161 存在於同一行),不確定這是正確的,但我得到了正確的時間細節。

但是有沒有辦法直接從p7s中提取時間戳呢?

您可以使用 OpenSSL 的cms命令查看簽名的 PKCS#7 文件的內容。假設您沒有獲得簽名者的證書,因此沒有驗證簽名並且只查看結構,您可以使用:

openssl cms -verify -noverify -cmsout -print -inform DER -in file.p7s

這將轉儲結構的詳細資訊,其中包括以下摘錄:

   signedAttrs:
       object: contentType (1.2.840.113549.1.9.3)
       set:
         OBJECT:pkcs7-data (1.2.840.113549.1.7.1)

       object: signingTime (1.2.840.113549.1.9.5)
       set:
         GENERALIZEDTIME:Aug  3 23:50:00 2020 GMT

awk您可以使用或grep為必填signingTime欄位過濾此內容。

如果過濾 OpenSSL 的文本輸出不適合您,還有其他工具更適合檢查任何 ASN.1 結構的內容。例如,如果您精通 Python,則可以使用pyasn1crypto

引用自:https://serverfault.com/questions/1046565