如何直接在Kestrel中使用PEM证书?

时间:2018-01-03 12:47:52

标签: c# asp.net-core .net-core ssl-certificate kestrel-http-server

我想在我的ASP.Net Core 2.0(使用Kestrel Web服务器)应用程序中使用HTTPS。

The official documentation使用pfx格式,但我想直接使用 PEM 格式(从Let的加密生成)而不进行任何转换(至少在我的C#之外没有任何内容)码)。有可能吗?

1 个答案:

答案 0 :(得分:3)

简短的回答是你无法做到。至少,你不能完成很多工作或使用像Bouncy Castle这样的东西。

当证书和密钥放在PFX中时,X509Certificate2对象将具有cert.HasPrivateKey == true,并且能够通过Get[Algorithm]PrivateKey扩展方法系列使用私钥。当您加载PEM证书时,只加载了公共证书部分(并且如果它是PEM证书,其上粘有PEM密钥?它仍然只是一个PEM证书)。

获取与证书关联的私钥的简便方法是使用新的(在.NET Core 2.0中)certWithKey = cert.CopyWithPrivateKey(key)扩展方法系列。所以现在你"只是"需要加载私钥。 .NET目前无法加载(或保存)" .key"文件(无论它们的扩展名是什么)。如果你想加载一个破解,你可能想要检查一些现有技术:

好消息是.NET计划在将来支持加载密钥(https://github.com/dotnet/corefx/issues/20414),但由于它还没有完成(更少发布),对你没有帮助现在。