簡體   English   中英

簽署 pdf 時出現“定義 scope 簽名數據的意外字節范圍值”

[英]"Unexpected byte range values defining scope of signed data" when signing a pdf

我使用此庫的修改版本: https://github.com/vbuch/node-signpdf#readme在 angular 應用程序中使用在別處創建的簽名對 pdf 進行簽名。 當我用福昕閱讀器打開已簽名的 pdf 時,簽名無效並顯示以下消息:

定義 scope 簽名數據的意外字節范圍值

任何想法可能是什么問題?

這是文件: https://drive.google.com/file/d/1eS2waysotpAx6VtHMNvhGvl3wqgiyoT7/view?usp=sharing

第一個示例文件

我無法在第一個示例文檔中重現“Unexpected byte range values defining scope of signed data”錯誤消息,福昕“僅僅”抱怨簽名無效。 這確實是因為您在將簽名字符串注入 PDF 之前忘記對其進行 base64 解碼 - PDF 需要 DER 格式的嵌入式簽名容器。

第二個示例文件

第二個示例文檔在評論中共享:

現在我不再收到有關字節范圍的錯誤,但我收到新錯誤:“自應用簽名以來,文檔已被更改或損壞。” 和“簽名者的身份無效,因為它已過期或尚未生效。” 和“簽名包含嵌入式時間戳,但無法驗證。” 不確定我現在做的是否正確。 這是新文件: https://drive.google.com/file/d/1vsa7thwCsi04r68cdcIsfJG7cT2__-d9/view?usp=sharing

事實上,簽名容器現在是以 DER 格式注入的,因此 Foxit Reader 可以驗證它。 關於新的錯誤消息:

“自應用簽名以來,文檔已被更改或損壞。” - 這表明此處存在一些摘要值不匹配。

計算和提取有問題的摘要值表明文檔的帶符號字節范圍的 SHA256 摘要值為

6CB28A1F84A85A820908B657A967BFE21C1BA7304D39AE2C8D64F9A15E5BFDB4

而簽名容器中的消息摘要屬性保持

75C31E9E948D41DE19F668CF4A5BE28128CB0BE8D1E4502A795FF9CA9FE54639

所以你的簽名確實與帶符號的字節范圍不匹配。

不過,有趣的是,這與第一個文件中簽名容器中簽名的摘要完全相同。 實際上整個簽名容器是相同的。 顯然,您只是重新使用了為之前的測試檢索到的簽名容器。 由於新文檔中的簽名時間不同,這是行不通的,你必須重新計算簽名字節范圍的摘要並為其請求簽名。

話雖這么說,即使對於您的第一份摘要文檔也是不正確的。 所以你顯然在計算摘要值時遇到了問題。

“簽名者的身份無效,因為它已過期或尚未生效。” 我沒有收到該錯誤消息,即使在手動更新 Foxit Reader 之后也沒有。 首先我被告知證書沒有鏈接到信任錨,在明確信任根證書后,我得到了“簽名者的身份有效”。 您是否在福昕閱讀器中選擇了一些非標准設置? 還是您本地計算機的日期完全關閉?

“簽名包含一個嵌入式時間戳,但無法驗證。” 我也明白了,但在這里我再次只需要信任 TSA 證書的根證書即可。

注釋

在評論中你問:

在哪里可以找到簽名中的消息摘要屬性?

消息摘要屬性是簽名容器中單個SignerInfo的簽名屬性。

如果您使用 ASN.1 查看器(例如http://lapo.it/asn1js/ )檢查您的簽名容器,請查找此

SEQUENCE (2 elem)
  OBJECT IDENTIFIER 1.2.840.113549.1.9.4 messageDigest (PKCS #9)
  SET (1 elem)
    OCTET STRING (32 byte) 75C31E9E948D41DE19F668CF4A5BE28128CB0BE8D1E4502A795FF9CA9FE54639

如果你想了解你所看到的細節,你應該研究RFC 5652和從那里引用的規范。

我如何明確信任根證書?

對於福昕閱讀器中的簽名者證書,打開簽名屬性對話框,select顯示證書,select 您要信任的證書(根 CA/中間 CA/終端實體),打開信任選項卡,然后按添加到受信任的證書

對於福昕閱讀器中的 TSA 證書,打開簽名屬性對話框,點擊底部的高級屬性,select 在時間戳詳細信息中顯示證書,select 您要信任的證書(根 CA/中間 CA/終端實體),打開信任選項卡,然后按添加到受信任的證書

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM