- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 IXmlEncryptor 实现静态加密。 .特别是使用 CertificateEncryptor。 (这是 IXmlRepository 系统的一部分,用于在 ASP.NET Core 中共享用于解密 cookie 和一般 key management 的 key 。)
这个 docs page讨论为此目的使用 X.509 证书。
表示“仅支持具有CAPI私钥的证书”。
谷歌搜索显示 CAPI 表示 Microsoft CryptAPI。但我找不到更多关于它的信息,而且我能找到的似乎与 C++ 相关。
当我问他什么是“CAPI 私钥”时,我的“证书人”基本上是这样告诉我的:
Microsoft generated PFX files converted to x509 have a password. That would be the only thing I could think of.
是一样的吗?
如果没有,如何创建带有 CAPI 私钥的 X.509 证书?
注意:X.509 证书是docs page 中列出的唯一选项。这将在 Linux 机器(容器)上运行。这就是为什么我没有考虑任何其他(可能更容易)的选项。
最佳答案
你的“证书人”不正确。
Microsoft 有两个版本的加密子系统:Legacy CrypotAPI(简称 CryptoAPI 或 CAPI)和下一代加密(CNG、CAPI2)。
CrytpoAPI 是在 Windows 2000 中发明的。旧版 CryptoAPI 在道德上已经过时,不支持 ECC、SHA2:只有 RSA/旧版 DSA(最多 1k 长 key )、DES/3DES、RCx,没有内置 AES。 key 存储在旧版加密服务提供程序(或 CSP)中。不过,在 Windows Vista+ 中,添加了带有 SHA2 和 AES 的旧版 CSP 以帮助旧版应用程序使用它们,而无需对代码进行太多更改。
CNG 于 2007 年在 Windows Vista/Windows Server 2008 中首次引入,它确实是一个好东西:它非常可扩展,原生支持 NSA Suite B 加密(ECC 非对称 key 、SHA2 算法组)、 key 隔离、统一的 BCrypt 功能集,而且必须更多。大多数仅限 CNG 的 API 在其名称中包含 NCrypt
、BCrypt
、CNG
、NG
后缀/前缀以明确表示它是 CNG API。在 CNG 中, key 存储在重新设计的称为 key 存储提供程序 (KSP) 的 CSP 中,以将其与传统 CSP 区分开来,因为它们不同(尽管有一个单向桥可以从 KSP 访问 CSP,但不是其他方式)。
然而,.NET 在采用 CNG 方面遇到了困难,使其或多或少只能在 .NET 4.7 中使用(以前存在实现,但存在已知限制),并且只有在明确添加对 CNG 的支持时,第 3 方应用程序才支持 CNG ,因为 CNG 使用不同的 API,并且 .NET Framework 升级不会使应用程序支持 CNG。
这是关于 CAPI 和 CAPI2 之间有什么区别的一点理论。
您的文档说它需要使用旧版 CSP 的证书来存储私钥。在 Windows 中创建时,如果使用以下提供程序之一,则会使用旧版 CSP:
Microsoft Base Cryptographic Provider v1.0
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
Microsoft Base DSS Cryptographic Provider
Microsoft Base Smart Card Crypto Provider
Microsoft DH SChannel Cryptographic Provider
Microsoft Enhanced Cryptographic Provider v1.0
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider
Microsoft Enhanced RSA and AES Cryptographic Provider
Microsoft RSA SChannel Cryptographic Provider <- this is preferred for legacy CSPs
Microsoft Strong Cryptographic Provider
您可以在 Windows 上创建证书( key 对)时指定其中任何一个。例如,当使用 New-SelfSignedCertificate
PowerShell cmdlet(默认为 CNG KSP)或 certreq.exe 工具生成由外部 CA 签名的请求时。这部分取决于您用于创建证书/证书请求的工具。
关于asp.net-core - 生成 CrypoAPI (CAPI) 私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61350156/
我是一名优秀的程序员,十分优秀!