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

时间:2018-11-12 08:17:02

标签: ssl .net-core ssl-certificate self-hosting

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

我设法在.Net Framework中做到了这一点,并且似乎所有方法都可以100%正常工作,但是一旦将其移至.NetCore时,我就会碰壁。我对.NetCore很陌生,所以我的知识非常有限。

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

我在此链接“ Generate self signed certificate on the fly”上遵循了确切的答案。

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

1 个答案:

答案 0 :(得分:1)

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

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

cert.PrivateKey = key;
return cert;

您需要更多类似的东西

return cert.CopyWithPrivateKey(key);

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

FWIW,您可以立即完成整个证书创建过程,而无需额外的依赖关系,如Generate and Sign Certificate Request using pure .net Framework所示。