Dot NET 是否支持 HSM 设备的 PKCS11 证书。如果没有,是否有任何其他支持 pkcs11 证书的第三方实用程序可用?
6 回答
对于 PKCS11,您可以使用开源Pkcs11Interop。它工作正常,并且包含大量带有使用示例的单元测试。
这个库可以满足您的需要: http ://www.ncryptoki.com
不确定您所说的“HSM 设备”是什么意思,因此您需要检查您的具体要求。
否则 .NET确实支持 PKCS9,但核心 .NET 中没有 PKCS11 的迹象(对于前 System.Security.Cryptography.Pkcs
命名空间)。
在核心 .NET 之外,还有一些搜索结果(例如http://msdn.microsoft.com/en-us/library/microsoft.clm.shared.profiletemplates.smartcardprovidertype(VS.85).aspx)。
您可以使用以下语句轻松地从 .net 调用 PKCS11 API:
[DllImport("cryptoki.dll")]
static extern ushort C_Initialize(int reserved);
Windows 和 .NET 由于它被签名为 Windows 平台,因此有自己的 PKCS#11 替代品。
在 .NET 本身中有 System.Security.Cryptography 具有密钥存储提供程序的概念,在 Windows 中有 CryptoAPI 及其加密服务提供程序及其较小的子集,称为为智能卡设计的微型驱动程序。
在这两种情况下,基于相关加密 API 构建的应用程序都可以访问与它们集成的硬件安全模块等加密设备。
所有供应商都将提供与这些提供商模型中的一个或多个的集成,因此如果您感兴趣,您可以在不使用 PKCS#11 的情况下使用这些设备。
如果您出于某种原因需要使用 PKCS#11,并且在某些情况下可能需要,您应该查看https://www.pkcs11interop.net/,因为它为提供的本机 PKCS#11 库提供了托管包装器由 HSM 供应商提供。
如果您沿着这条路线走,您可以使用 SoftHSM ( https://www.opendnssec.org/softhsm/ ) 进行测试,如果您手边没有这样的设备,如果您继续使用 Windows 加密 API,您可以使用Windows 中包含的虚拟智能卡解决方案,这将做一个合理的工作,近似于物理 HSM 遇到的问题。
我不是 .NET 专家,但根据 Google PKIblackbox的说法,PKIblackbox有一个可以说 PCKS#11 的 .NET 工具包。然后存在一些 PKCS#11-CSP 包装器,它们允许通过 CryptoAPI 访问 PKCS#11 模块,因为我认为 .NET 世界有很多助手。此类包装器之一是CSP11