我正在尝试为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的了解非常有限,因此如果有人可以向我指出正确的方向,将不胜感激。
答案 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所示。