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

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

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

参考方案

简短的答案是你不能。至少,您不能没有大量的工作或使用诸如Bouncy Castle之类的东西。

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

获得与证书关联的私钥的简单方法是使用新的(.NET Core 2.0)certWithKey = cert.CopyWithPrivateKey(key)扩展方法系列。因此,现在您“只是”需要加载私钥。 .NET当前无法加载(或保存)“。key”文件(无论其扩展名如何)。如果您想在加载时有所作为,则可能需要检查一些现有技术:

How to parse(Convert to RSAParameters) X.509 private key in C#?
Create RSACryptoServiceProvider object using RSA private key file in C#
How is a private key encrypted in a pem certificate?
Export private/public keys from X509 certificate to PEM

好消息是.NET计划在将来支持加载密钥(https://github.com/dotnet/corefx/issues/20414),但是由于尚未完成(发行量要少得多),因此目前无济于事。

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

从Axios请求以ASP.NET Core API返回下载文件 - c#

大家好我正在尝试从Axios Request从ASP.NET Core Web API下载文件。这是我的示例API方法。 (基于此stackoverflow question的代码)[HttpPost("download")] public async Task<IActionResult> DownloadFile(){ .…

从.NET Core 2.1降级到.NET 4.7.1时,如何使用IApplicationBuilder和IServiceCollection? - c#

我不得不将我的项目从.NET Core 2.1更改为.NET 4.7.1,并且修复了几乎所有错误,但以下错误仍然困扰着我 “ IApplicationBuilder”不包含“ UseHsts”的定义,也找不到找不到接受类型为“ IApplicationBuilder”的第一个参数的扩展方法“ UseHsts”(是否缺少using指令或程序集引用?) “ IA…

如何获取.NET Core 3单文件应用程序以查找appsettings.json文件? - c#

如何配置单文件.Net Core 3.0 Web API应用程序以查找与建立单文件应用程序相同的目录中的appsettings.json文件?跑步后dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true 该目录如下所示:XX/XX/XXXX XX:XX PM <DIR> . X…

如何在启用了ASP.NET Core 2.2 EndpointRouting的情况下使用RouteDataRequestCultureProvider? - c#

我正在尝试在新的ASP.NET Core 2.2 MVC项目中使用RouteDataRequestCultureProvider。我已经阅读了Routing in ASP.NET Core上的Microsoft文档,以了解2.2中引入的更改,但是我不明白为什么“文化”不被视为URL生成的环境值。我在Startup.cs中更新了ConfigureService…