本质上我还是一个Windows App Developer,所以虽然会做一些ASP.NET Core的工作,但通常这些ASP.NET Core的程序会托管在Windows Service上,并且大部分时候跑在局域网环境。说实话传统行业的Win DEV对Web这一套其实不怎么精通,今天我们来看一下ASP.NET Core程序如何通过配置文件添加证书,启用HTTPS。
回顾上一篇《.NET 6学习笔记(6)——SSL证书的导出和格式转换》,我们介绍了如何从Windows中查找证书,并转换格式。
因为本篇的ASP.NET Core可以直接使用PFX证书,所以转换这一步不再提及。我们托管在Windows Service上的ASP.NET Core程序,一般都是通过本机域名localhost + port的形式来访问。这也为使用自签证书创造了便利的条件,只要像给IIS Express用的自签证书一样,证书“使用者”(Subject)的CN(Common Name)属性是localhost,即可满足我们的要求。
除了去申请一个免费的SSL证书外。这里也讨论下,如何从Windows导出PFX格式的证书。仍以IIS Express用的自签证书举例。
通过PowerShell脚本,可以方便的查找并导出:

$thumbPrint = $null
$certs = get-childitem cert:\\LocalMachine\\my
foreach ($certItem in $certs)
{
$certItem.Issuer
if ($certItem.Issuer -eq "CN=localhost")
{
$thumbPrint = $certItem.Thumbprint
break
}
} Write-Host $thumbPrint
if ($null -ne $thumbPrint){
$mypwd = ConvertTo-SecureString -String "1234" -Force -AsPlainText
Get-ChildItem -Path cert:\localMachine\my\$thumbPrint | Export-PfxCertificate -FilePath C:\temp\sampleCert.pfx -Password $mypwd
Write-Host "Export IIS Express cert as Pfx file sucessfully."
}
else {
Write-Host "Can't find IIS Express cert."
}

根据上述脚本,导出的证书我们在C:\temp目录可以找到,导出的时候设置了密码1234,ASP.NET Core程序通过配置文件添加证书,需要填写该密码。

当然ASP.NET Core启用HTTPS的方式有很多种,通过配置文件appsetting.Production.json来添加证书。可能是最简单的一种。
至于如何创建用来托管ASP.NET Core程序的Windows Service,可以参考《.NET 6学习笔记(3)——在Windows Service中托管ASP.NET Core并指定端口》
在示例中,我们创建一个空的ASP.NET Core Web Application,然后添加一个appsettings.Production.json文件,添加如下图所示的配置信息。节点名称HttpsInlineCertFile只是举例,并非固定。

在完成以上修改后,我们publish该示例程序,成功发布后,打开publish的文件夹。然后我们双击生成的exe文件。可以看到我们成功应用了配置文件中的端口号,以及https的url。

接下来打开浏览器访问这个地址,查看证书可以发现证书的使用者是localhost,这是我们导出的IIS Express证书能被来拿使用的原因。

如果想要验证确实是在使用导出到c:\temp文件夹的证书,可以把导出的证书文件删掉。然后重新打开publish目录下的exe文件,会有Exception抛出。

本篇就到这里了,在实际的项目中,不太可能去导出IIS Express使用的证书,但是原理是相似的,不同项目组之间的Web APP在集成的时候,往往会需要实现文中的操作。

Github:

manupstairs/WebAppWithHttps: This example is used to demonstrate how to add an SSL certificate through a configuration file to enable HTTPS in ASP.NET Core (github.com)

以下链接,是MS Learn上Windows开发的入门课程,单个课程三十分钟到60分钟不等,想要补充基础知识的同学点这里:

开始使用 Visual Studio 开发 Windows 10 应用

开发 Windows 10 应用程序

编写首个 Windows 10 应用

创建 Windows 10 应用的用户界面 (UI)

增强 Windows 10 应用的用户界面

在 Windows 10 应用中实现数据绑定

.NET 6学习笔记(7)——ASP.NET Core通过配置文件启用HTTPS的更多相关文章

  1. (8)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot网关(Api GateWay)

    说到现在现有微服务的几点不足: 1) 对于在微服务体系中.和 Consul 通讯的微服务来讲,使用服务名即可访问.但是对于手 机.web 端等外部访问者仍然需要和 N 多服务器交互,需要记忆他们的服务 ...

  2. (7)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 利用Polly+AOP+依赖注入封装的降级框架

    创建简单的熔断降级框架 要达到的目标是: 参与降级的方法参数要一样,当HelloAsync执行出错的时候执行HelloFallBackAsync方法. public class Person { [H ...

  3. (2)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- .NetCore启动配置 和 .NetCoreWebApi

    什么是.Net Core?.Net Core是微软开发的另外一个可以跨Linux.Windows.mac等平台的.Net.Net Core相关知识看文章地步dotnet dllname.dll 运行P ...

  4. (5)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 熔断降级(Polly)

    一. 什么是熔断降级 熔断就是“保险丝”.当出现某些状况时,切断服务,从而防止应用程序不断地尝试执行可能会失败的操作给系统造成“雪崩”,或者大量的超时等待导致系统卡死. 降级的目的是当某个服务提供者发 ...

  5. (1)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 什么是微服务架构,.netCore微服务选型

    开发工具:VS2017 .Net Core 2.1 什么是微服务?单体结构: 缺点: 1)只能采用同一种技术,很难用不同的语言或者语言不同版本开发不同模块: 2)系统耦合性强,一旦其中一个模块有问题, ...

  6. (11)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Thrift高效通讯 (完结)

    一. 什么是 RPC Restful 采用 Http 进行通讯,优点是开放.标准.简单.兼容性升级容易: 缺点是性能略低.在 QPS 高或者对响应时间要求苛刻的服务上,可以用 RPC(Remote P ...

  7. (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server

    用 JWT 机制实现验证的原理如下图:  认证服务器负责颁发 Token(相当于 JWT 值)和校验 Token 的合法性. 一. 相关概念 API 资源(API Resource):微博服务器接口. ...

  8. (6)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- AOP框架

    AOP 框架基础 要求懂的知识:AOP.Filter.反射(Attribute). 如果直接使用 Polly,那么就会造成业务代码中混杂大量的业务无关代码.我们使用 AOP (如果不了解 AOP,请自 ...

  9. (3)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Consul服务治理

    Consul是注册中心,服务提供者.服务提供者.服务消费者等都要注册到Consul中,这样就可以实现服务提供者.服务消费者的隔离. 除了Consul之外,还有Eureka.Zookeeper等类似软件 ...

  10. (9)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- JWT算法

    一. JWT 简介 内部 Restful 接口可以“我家大门常打开”,但是如果要给 app 等使用的接口,则需要做权限校验,不能谁都随便调用. Restful 接口不是 web 网站,App 中很难直 ...

随机推荐

  1. mysql查询结果拼接树结构(树节点的移动)

    mysql查询结果拼接树结构(树节点的移动) 思路:单表内查询全部数据,在业务层内递归拼接树结构. 前端用的是element的Tree 树形控件: 树结构实体: @Data @AllArgsConst ...

  2. MySQL进阶实战2,那些年学过的事务

    @ 目录 一.MySQL服务器逻辑架构 二.并发控制 1.读写锁 2.锁粒度 3.表锁 4.行级锁 三.事务 1.原子性(atomicity) 2.一致性(consistency) 3.隔离性(iso ...

  3. layui table 表头抖动

    原本table超出页面宽度(即table有横向滚动条)的情况下,缩放页面然后再设置定时器定时更新表单,会发现数据不变的时候table头部会左右抖动 而且th td比设置的minWidth 或者cell ...

  4. 解决aspnetcore-browser-refresh.js:234 WebSocket connection to 'wss://localhost:62356/Admin/' failed问题

    前言 前段时间升级了Visual Studio到v17.1.1最新版本,然后今天来运行之前的一个.net5项目一直提示:aspnetcore-browser-refresh.js:234 WebSoc ...

  5. MySQL单表查询(分组-筛选-过滤-去重-排序-分页-判断-正则)

    目录 一:单表查询 1.单表查询(前期准备) 2.插入记录(写入数据) 3.查询关键字 二:查询关键字之where 1.查询id大于等于3小于等于6的数据 2.查询薪资是20000或者18000或者1 ...

  6. 过两年 JVM 可能就要被 GraalVM 替代了

    大家好,我是风筝,公众号「古时的风筝」,专注于 Java技术 及周边生态. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 今天说一说 Graal ...

  7. vue中mixins(混入)的用法

    vue中mixin的使用详解 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被&quo ...

  8. 重学c#系列——元组 [三十一]

    前言 元组并不是c# 7.0的东西,早之前就有,叫做tuple.7.0加了valuetuple. 来看下元组吧,主要一些注意的地方. 正文 为什么在7.0 之前,元组用的不多呢? 因为tuple 在代 ...

  9. Vue3 企业级优雅实战 - 组件库框架 - 9 实现组件库 cli - 上

    上文搭建了组件库 cli 的基础架子,实现了创建组件时的用户交互,但遗留了 cli/src/command/create-component.ts 中的 createNewComponent 函数,该 ...

  10. 2021 & 2022年终回顾:山河无恙,烟火寻常

    前言 又到了一年一度年终回顾的时候了,回想起去年年底圣诞节的时候由于忙着参加黑客松大赛,一下子就进入了新的一年,失去了年终回顾的动力,所以今年提前两个月开始进行回顾,这样的话今年最后一天就可以顺利发文 ...