当前位置: 首页 > news >正文

三种方法为 ASP.NET Core 对外服务添加 https 支持(kestrel / frp / nginx)

虽然使用 Visual Studio 创建 ASP.NET Core 程序的时候可以选择是否添加 https 支持,不过这种方式只添加了 localhost 的证书,只有本地访问时浏览器才会承认。真正对外公开服务的时候这样是绝对没法儿提供 https 服务的。

本文介绍使用三种不同的方式添加 https 的支持,三种方法各有优劣,本文会进行比较并给出不同的适用场景。你自己选择就好。


本文内容

    • 你需要有一个证书
    • 方法

你需要有一个证书

如果你还没有证书,可以考虑去 https://freessl.org/ 免费申请一个。可以为泛域名申请 3 个月有效期的证书(Let’s Encrypt),或者为单域名申请 6 个月有效期的证书(buypass)。

如果不知道如何操作,可以参考我的另一篇博客:

  • 使用 freessl.org 为你的域名申请免费的 SSL 证书

你可以在以上博客中得到四种不同格式的证书(Nginx/Apache/IIS/Tomcat),下面的方法中每一种方法会使用到其中的一种证书。

方法

实际上,只要是一个 Web 服务器就可以为 ASP.NET Core 服务程序提供 https 的支持,不过本文只会介绍下面这三种方法:

  • Kestrel
    • 这是 ASP.NET Core 自带提供的 Web 服务器
  • Frp
    • 这是一个开源即将收费的反向代理服务
  • Nginx
    • 这是非常强大的 Web 服务器,同时也是强大的反向代理服务器

Kestrel 最简单,几句代码即可配完。Frp 相对来说也很简单。而 Nginx 非常强大,几乎适用于各种 Web 服务场景。

Nginx 支持 http2,Kestrel 的 Windows 和 Linux 版本支持 http2。


发现写成一篇博客会模糊这些方法之间的步骤,所以我将它们分别写成了几篇博客:

  • 使用 Kestrel 为你的 ASP.NET Core 服务添加 https 支持
  • 使用 Frp 为你的 Web 服务添加 https 支持
  • 使用 Nginx 为你的 Web 服务添加 https 支持

我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • 为 ASP.NET Core 程序制作 URL 的 301/302 跳转
  • 使用 Frp 为你的 Web 服务添加 https 支持
  • 全民 https!使用 FreeSSL 申请免费的 https 证书
  • 如何设置 ASP.NET Core 程序监听的 IP 和端口
  • 收集的 Linux VPS 在线重装系统脚本
  • Linux 系统根目录下的文件夹
  • 修复 Windows 10 设置界面里面混乱的语言翻译
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • 用命令行执行 .NET 单元测试时,如何仅执行符合某些条件的单元测试
  • WPF 中如何绑定附加属性?XAML 中记得加括号,C# 中记得不能用字符串
  • VSCode:当匹配到结果时,如何一次性全部选中操作(复制 删除)?
  • Unity3D 入门:安装 Unity3D 并配置与 Visual Studio 的协作开发环境
  • 在 Visual Studio 2019 (16.5) 中查看托管线程正在等待的锁被哪个线程占用
  • 将 Windows Terminal 作为外部工具集成到其他工具 程序 代码中
  • Unity3D 入门:在 Visual Studio 里使用 Visual Studio Tools for Unity 全套工具
  • 【Leetcode】101. 对称二叉树
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Angular 4.x 动态创建组件
  • Java 内存分配及垃圾回收机制初探
  • JS变量作用域
  • js作用域和this的理解
  • React-生命周期杂记
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SwizzleMethod 黑魔法
  • vue 个人积累(使用工具,组件)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 构建工具 - 收藏集 - 掘金
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 今年的LC3大会没了?
  • 面试总结JavaScript篇
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (42)STM32——LCD显示屏实验笔记
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)JAVA中的堆栈
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net Memory Profiler的使用举例
  • .net 微服务 服务保护 自动重试 Polly
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NetCore项目nginx发布
  • .net访问oracle数据库性能问题
  • .NET中GET与SET的用法
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /3GB和/USERVA开关