【问题标题】:How to programatically digitally sign an open office XML Docx document with X509 Certificate?如何使用 X509 证书以编程方式对开放式 Office XML Docx 文档进行数字签名?
【发布时间】:2016-10-11 21:55:02
【问题描述】:

我想使用 Java 或 C# 中的 X509 证书以编程方式对开放式 Office XML Docx 文档进行数字签名。

此链接使用 System.IO.Packaging 中的 PackageDigitalSignatureManager 在 C# 中表现出色: http://blogs.infosupport.com/blogs/wouterv/archive/2007/02/24/Signing-Office-Open-XML-documents-using-the-Packaging-API.aspx

虽然这很好用,但最后它会提示用户对话框,要求他输入经过身份验证的数字签名的 PIN 码。

您知道如何以编程方式设置此 PIN 码吗?

干杯


感谢您的详细回答。 基本上,我使用的是电子 ID 智能卡,它具有用于签署数字文档的证书。

通常我将 X509Certificate 类型的公钥传递给 PackageDigitalSignatureManager Sign() 方法。

此方法将对文档进行签名,但会提示用户输入 PIN 以检索存储在智能卡中的私钥。

是否可以向 PackageDigitalSignatureManager 传递一个包含 PKCS12 文件中的公钥/私钥对的对象,然后它不会提示用户输入 PIN 码。

干杯,

【问题讨论】:

    标签: digital-signature x509certificate


    【解决方案1】:

    问题 #2 的答案取决于您使用的技术,更重要的是,取决于证书的存储位置。

    在 Java 密钥存储 (JKS) 中,证书受密码保护,并且这些密码在代码中传递。

    在 Windows 证书存储(.NET 加密类使用的位置)中,证书使用 PIN 进行保护,大多数密码提供者无法通过代码设置该 PIN(有用于设置 PIN 的扩展命令,但大多数提供者不支持)和用户需要手动确认对私钥的访问。

    如果您使用存储在 PKCS12 文件中的证书,则该文件的密码也在代码中设置。

    如果您有兴趣 (check here),我们还提供了用于在 .NET 中签署办公文档的组件。与大多数示例代码不同,它们得到维护和支持。

    【讨论】:

      【解决方案2】:

      MSDN 中有一个答案,涵盖了它。 需要 3 个步骤

      【讨论】:

        猜你喜欢
        • 2011-06-07
        • 2011-09-05
        • 2023-04-11
        • 2014-06-17
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 2016-06-24
        相关资源
        最近更新 更多