在 .NetCore 控制台应用程序中生成受信任的自签名证书

Rua*_*uan 3 ssl self-hosting ssl-certificate .net-core

我正在尝试为本地主机生成受信任的自签名证书。该证书将用于控制台应用程序内的自托管 Web API。由于该项目的要求,必须信任本地主机连接,并且应用程序将安装在客户端 PC 上,这意味着必须以编程方式生成证书。

我已经成功地在 .Net Framework 中实现了这一点,并且一切似乎 100% 正常工作,但是当我将其转移到 .NetCore 时,我遇到了困难。我对 .NetCore 很陌生,所以我的知识非常有限。

我正在使用 Bouncy Castle 生成证书,但由于某种原因,当我尝试为 .NetCore 中的自签名证书分配私钥时,我收到“System.PlatformNotSupportedException:'此平台不支持操作”。例外。当我尝试使用“ DotNetUtilities.ToRSA(rsaparams) ”将RsaPrivateCrtKeyParameters转换为PrivateKey时,会发生此异常。

我遵循了此链接“动态生成自签名证书”上的确切答案。

由于我对 .NetCore 的了解非常有限,如果有人能指出正确的方向,我将不胜感激。

bar*_*njs 5

具体问题是.NET Core 不支持 cert.PrivateKey 上的 setter。

最接近的模拟是cert.CopyWithPrivateKey,但代码不同。而不是

cert.PrivateKey = key;
return cert;
Run Code Online (Sandbox Code Playgroud)

你需要更多类似的东西

return cert.CopyWithPrivateKey(key);
Run Code Online (Sandbox Code Playgroud)

因为 CopyWithPrivateKey 会创建一个新的 X509Certificate2 对象,而目标对象保持不变。

FWIW,您现在可以完成整个证书创建,而无需额外的依赖项,如使用纯 .net Framework 生成并签署证书请求中所示。