【问题标题】:create a certificate for microsoft office using pkcs11 library使用 pkcs11 库为 microsoft office 创建证书
【发布时间】:2015-11-12 16:12:16
【问题描述】:

我有一个与供应商的智能卡联系的 PKCS#11 库。没有提供底层细节,我也对它们不感兴趣。

顺便说一句,智能卡没有与之关联的内部证书,它只是一个带有私钥存储的哑智能卡。

所以我的问题是:

  1. 我应该编写什么样的代码才能从 PKCS#11 库中获取证书,还是需要编写这样的代码? PKCS#11 是否支持导出证书?(我听说 openssl 支持使用 3rd 方 PKCS#11 库。我可以用它从智能卡导出证书吗?)

  2. 如果上一个问题的答案是肯定的,那么证书是以何种格式创建的?我应该做什么样的转换才能将原始创建的证书转换为 office 支持的格式证书?

  3. 最后一个问题是如何将该证书应用到 microsoft office(2013) 以便对文档进行数字签名?看起来那个办公室本身不喜欢内部证书,它一直要求我们从威瑞信(?)那里得到一个这里有什么问题,我如何强制办公室使用上述方法使用我自己创建的证书?

【问题讨论】:

    标签: certificate ms-office sign digital-certificate pkcs#11


    【解决方案1】:

    PKCS#11 接口允许您从硬件读取(“导出”)证书。但是,您不仅需要证书,还需要私钥。大多数硬件设备不允许您导出私钥。 PKCS#11 具有一组功能,可让您使用存储在硬件中的私钥执行加密操作,但不能导出这些密钥。

    证书通常以原生 DER 格式导出,以后可以放入 PFX 文件。但是没有私钥就没有意义。

    很遗憾,我不知道 MS Office 期望什么。我假设您的 Office 仅接受可以验证为受信任的根证书的证书。

    【讨论】:

    • 是的,你是对的。因此,在这种情况下,我可能需要将加密提供程序自定义为属于智能卡的自定义 csp。所以基本上我需要使用自定义 lib 实现将 pkcs11 证书导入 Mozilla 密钥库,将其导出为 x509,将其引入办公室,然后使用自定义 csp 进行散列和签名数据。如果有人可以确认或更正这个概念,我将不胜感激。也许我在这里遗漏了一些东西?(证书 CA 以及如何将用户注册到其中(?))不幸的是,我对 Windows CA 及其行为知之甚少。
    • @lkn2993 我不确定所描述的路径是否最佳。您可以轻松地从 PKCS11 设备中提取 x.509 证书,但接下来您将如何处理呢?自定义 CSP 将不起作用。最简单的方法是为您的硬件设备获取 CSP,该 CSP 能够将证书映射到 Windows 证书存储。例如,假设您的证书由适当的 CA 颁发,并且用于文档签名而不是 SSL。如果您的证书不符合这些条件,那么您可能需要另一个证书。
    • 因此,如果我创建自己的使用 pkcs11 库的 pki 并使用它注册证书,那么我将能够签署办公文件。是吗?嗯,这比我最初假设的要简单得多
    • @lkn2993 这取决于 Office 是否需要它可以验证的证书。如果是这样,那么您需要将您的根证书添加到受信任的根列表中。您还需要正确设置证书的 KeyUsage 和 ExtKeyUsage 属性。
    • 我不知道 office 接受哪种证书格式的数字签名,也许我做错了什么,如果有人帮助我创建证书并将其导入 ms office,我将不胜感激(它每次都要求我从威瑞信获取数字身份证(?))
    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 2013-03-30
    • 2016-03-01
    • 2016-09-28
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多