azure - 使用 Azure Key Vault + Azure Function Apps + CA 证书签署 PDF 文档时出错

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

我构建了一个 Azure 函数应用程序,它使用 iTextSharp 签署 PDF 文档。 此函数应用使用存储在 Azure Key Vault 中的证书。

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

这意味着,当我打开已签名的 PDF 文件并单击签名详细信息时,出现错误:

Error during signature verification.

Error encountered while validating:

Internal cryptographic library error.

Error Code: 0x2726

我尝试将工作证书与 CA 证书进行比较,我发现的唯一区别是工作证书的 key 具有“加密” key 标记,而 CA 证书则没有。该标志不可编辑,或者我只是找不到控制该标志的方法。

请指教。

编辑: 请找到以下示例文件链接。

Working Azure key vault Certificate generated PDF

Invalid CA Certificate generated PDF

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

最佳答案

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

特别是它有一个带有值的 key 用法扩展:

  • 数字签名,
  • keyCertSign,以及
  • cRLSign。

另一方面,Adobe 仅接受具有以下一项或多项的签名者证书:

  • 不可否认性
  • 数字签名

如果 key 使用扩展确实存在,请授予例如Adobe 的 Digital Signatures Guide for IT - Appendix A: Changes Across Releases 。因此,您的证书还具有 key 使用值 keyCertSign 和 cRLSign,这一事实使其不适合签署 PDF(或者更准确地说,不适合使用它签名并由 Adob​​e 软件验证的 PDF)。

由于您的证书可以充当证书颁发者,您可以使用它颁发专用签名者证书,以满足 Adob​​e 对可接受签名者证书的要求。不过,不要忘记提供并公布 CRL,以允许撤销检查!

<小时/>

关于azure - 使用 Azure Key Vault + Azure Function Apps + CA 证书签署 PDF 文档时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47175123/

相关文章:

java - REST API Azure 事件中心 ExpiredToken

pdf - 使用 iText 时某些 pdf 文件水印不显示

security - 适合普通用户的简单数字签名

python-2.7 - Ansible Azure 模块

azure - 强制 Azure 回收应用程序池而不仅仅是 AppDomain

css - XMLWorker : CSS does not work only if it is selected the "class" attribute of a TAG

java - 使用 iText 删除指定区域中出现的文本

python - 我应该使用 HMAC 摘要的 Base64 还是仅使用 HMAC 十六进制摘要?

php - 带有 PHP 和 Laravel 的数字签名 PDF 文件

python - Azure 数据湖引发错误 - 确保授权 header 的值格式正确,包括签名