使用Azure Key Vault + Azure功能应用程序+ CA证书签署PDF文档时出错

时间:2017-11-08 08:47:15

标签: azure itext digital-signature azure-functions azure-keyvault

我已经构建了一个Azure功能应用程序,该应用程序使用iTextSharp签署PDF文档。 此功能应用程序使用存储在Azure Key Vault中的证书。

使用自签名证书时,例如在该保险库内或本地计算机上生成的证书,一切正常,我可以在PDF文件中看到签名详细信息,但是当我尝试使用来自CA的证书时,例如,我导入到Vault中的COMODO或digiCert的.PFX文件,PDF签名出现错误。

意思是,当我打开已签名的PDF文件并单击签名详细信息时,我收到错误:

  

签名验证期间出错。

     

验证时遇到错误:

     

内部加密库错误。

     

错误代码:0x2726

我尝试将工作证书与CA证书进行比较,我发现的唯一区别是,工作证书的密钥具有"加密"密钥标记和CA标记,不是。此标志不可编辑,或者我无法找到控制此标志的方法。

请建议。

编辑: 请在下面找到示例文件的链接。

Working Azure key vault Certificate generated PDF

Invalid CA Certificate generated PDF

必须在Acrobat中下载和打开文件才能看到签名。

1 个答案:

答案 0 :(得分:1)

您的PDF确实由CA证书签名,即可用于颁发其他证书的证书。 (当我读到你的问题时,虽然你的签名者证书只是由适当的CA证书颁发,而不是 是CA证书。)

特别是它的关键用法扩展包含值:

  • 的DigitalSignature,
  • keyCertSign,
  • cRLSign。
另一方面,Adobe只接受带有以下一个或多个的签名者证书:

  • 不可否认性
  • 的DigitalSignature

如果密钥使用扩展名完全存在,则例如Adobe的Digital Signatures Guide for IT - Appendix A: Changes Across Releases。因此,您的证书还具有密钥使用值keyCertSign和cRLSign这一事实使其不适合签署PDF(或者更准确地说用于使用Adobe软件验证的PDF签名)。

由于您的证书可以作为证书颁发者,您可以使用它颁发专用的签名者证书 ,以满足Adobe对可接受的签名者证书的要求。不过,不要忘记提供和宣传CRL,以允许撤销检查!