gpt4 book ai didi

asp.net-core - 生成 CrypoAPI (CAPI) 私钥

转载 作者:行者123 更新时间:2023-12-05 01:12:50 25 4
gpt4 key购买 nike

我正在尝试使用 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 在其名称中包含 NCryptBCryptCNGNG 后缀/前缀以明确表示它是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com