原创WebApi框架:采用HTTPS协议SelfHosting,Windows服务承载WebApi服务


  原创WebApi框架:采用HTTPS协议SelfHosting,Windows服务承载WebApi服务
原创WebApi框架:采用HTTPS协议SelfHosting,Windows服务承载WebApi服务


前言

自2017年发布CSFramework WebApi服务端开发框架以来,一直是使用http协议,默认WebApi使用http协议承载。有三种承载(Hosting或宿主)方式:IIS Hosting(IIS承载)、Self Hosting(自承载) 以及Windows Service Hosting(Win服务承载)。

由于最近微信小程序项目比较多,发布和部署微信小程序必须采用https协议,原http协议的WebApi接口访问不了的。为了解决这个问题,又开始技术探索,研究了几天,终于找到解决方案并整理成册,希望给Self Hosting或Windows服务Hosting启动Https协议WebApi服务用户启示和帮助。

PS:IIS部署HTTPS协议的WebApi服务比较简单,下载一个免费SSL证书,安装部署到IIS服务即可,这里不做介绍了。

思路和尝试

直接将WebApi监听的地址修改为Https启动服务显然是不行的,必须借助证书绑定开启对应的端口才行。开始想到去申请的一个免费的证书,由于WebAPi安装在本地Windows服务中且IP地址不固定,所以免费的证书不可取,只能借助MakeCert命令自行创建证书来解决这个问题。


关于证书的信任关系

两个服务器之间是如何利用证书来进行相互之间的信任呢?请看下图:

贴图图片-WebApi框架HTTPS协议SelfHostingWin服务承载13

在如上图中,管理员通过交换双方之间的公钥中的指纹来建立二者服务器之间的信任关系。


完整解决方案: 


一、以管理员身份运行VS2015开发人员命令提示


贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载


二、生成证书,在命令窗体内执行MakeCert命令


cmd:

MakeCert -sv e:\CSFrameworkWebApiCA.pvk -n "CN=localhost" e:\CSFrameworkWebApiCA.cer -b 02/12/2020 -e 12/31/2050 –r

//来源:C/S框架网(www.csframework.com) QQ:23404761


【注意】:该命令最后一个-r不能缺少,-r是创建自创建证书的标识,否则当利用Pvk2pfx创建私钥时则会出现【ERROR: File not found.(Error Code = 0x80070002)】


贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载1


三、打开MMC将创建的证书导入到【受信任的颁发证书机构】中


贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载2

四、创建证书的私钥


cmd:

Pvk2pfx -pvk CSFrameworkWebApiCA.pvk -spc CSFrameworkWebApiCA.cer -pfx CSFrameworkWebApiCA.pfx -po test

//来源:C/S框架网(www.csframework.com) QQ:23404761


注意:-po 后面是密码,如:test


五、导入个人证书,必须选择个人信息交换(*.pfx文件格式)


贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载3


六.  拿到该证书的指纹,获取证书指纹信息。


贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载4


七、证书绑定ip及端口,通过如下命令进行:(这是本文最关键环节!!!)


cmd:

netsh http add sslcert ipport=0.0.0.0:19893 certhash= 93d80be8cc4cb75bff28f412fbe00f5180106e40 appid={61982502-E5D4-4794-BB01-ZDA7414480DF}


//来源:C/S框架网(www.csframework.com) QQ:23404761


certhash参数:指定的证书的指纹。
appid参数:是一个 GUID,用于标识所属应用程序,自己生成一个GUID。

部署Self Hosting 或Windows Service Hosting 宿主的WebApi服务,通过工具操作非常方便,C/S框架网提供IP端口绑定SSL证书用于支持HTTPS协议的原创工具:

贴图图片-IP端口绑定证书


此工具可下载源码:




其他参考:删除证书与IP端口的绑定关系

netsh
http delete sslcert ipport=0.0.0.0:19893

一旦删除证书绑定关系或者运行netsh http add sslcert失败,无法访问webapi接口资源,如下图:

贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载5


查看端口是否已监听

运行WebApi服务器,输入命令:netstat -ano,列出所有端口的情况,可以查看端口是否已监听。


贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载8


查看端口、证书绑定状态:

netsh
http show sslcert


贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载9




八、测试HTTPS协议及WebApi接口

IE浏览器测试:

启动Windows服务CSFramework.WebApi服务器,打开浏览器输入

https://localhost:19893/api/do/post

服务器回应 {"Message":"The requested resource does not support http method 'GET'."}
这是正常回应,表示WebApi服务器正常。因为api/do/post接口是HTTPOST方式才出现上面的回应。


贴图图片-WebApi框架HTTPS协议SelfHostingWin服务承载14


使用IE浏览器,网站标识与服务器的连接已加密,https协议以及证书正常。


贴图图片-WebApi框架HTTPS协议SelfHostingWin服务承载12


WebAPI接口测试程序测试:

贴图图片-WebApi框架HTTPS协议SelfHostingWin服务承载15


九、操作错误遇到的问题归集


若执行dos命令出现以下错误,【VS2015开发人员命令提示】必须以管理员身份运行!

贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载6


若出现以下错误:

未能添加SSL证书,错误:1312,指定的登录会话不存在。可能已被终止。

解决方案:创建私钥,并导入个人证书,参考上面的步骤。

贴图图片-WebApi框架HTTPS协议SelfHostingWindows服务承载7



Google Crome浏览器调试错误NET::ERR_CERT_COMMON_NAME_INVALID

此服务器无法证实它就是 localhost - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。

贴图图片-WebApi框架HTTPS协议SelfHostingWin服务承载10


出现上述问题的解决方案:给个人证书指定主题备用名称(友好名称)


贴图图片-WebApi框架HTTPS协议SelfHostingWin服务承载11

技术研究以及发布文章前后花了3天时间,希望对大家有所帮助,欢迎购买C/S框架网正版WebApi框架


<本文完>





.NET WebApi开发框架|MVC框架|后端框架|服务端框架-标准版V1.0

适用开发 适用开发:快速构建支持多种客户端的服务端程序,支持APP、B/S、C/S跨平台移动终端等。
运行平台 运行平台:Windows + .NET Framework 4.5
开发工具 开发工具:Visual Studio 2015+,C#语言
数据库 数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)

WebApi服务端开发框架

产品详情:http://www.csframework.com/cs-framework-webapi-1.0.htm


扫一扫加微信:
 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务自承载WebApi服务器) - C/S框架网原创
下一篇:微信小程序使用https协议的WebApi后端应用服务(Win服务宿主或自承载)
评论列表

发表评论

评论内容
昵称:
关联文章

WebApi框架采用HTTPS协议SelfHostingWindows服务承载WebApi服务
】WCF开发框架 - 采用wsHttpBinding及basicHttpBinding连接https协议的WCF服务
C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务承载WebApi服务器) - C/S框架
微信小程序使用https协议WebApi后端应用服务(Win服务宿主或自承载
WCF开发框架-客户端采用Windows身份认证调用HTTPS协议WCF接口
提供的URI方案http无效,应为https,参数名via - WCF服务采用HTTPS协议
WCF快速开发框架 - IIS承载WCF服务wsHttpBindings配置详解(HTTP协议)
ASPNET WebApi服务器三种承载方式:SelfHosting,IIS Hosting, WinService Hosting
C/S系统快速开发平台采用Windows服务承载的WCF服务器
产品-微信小程序APP服务WebApi开发框架
.Net后端框架|WebApi服务端开发框架|C/S框架作品
文章:WebApi接口开发实例,搭建和部署WebApi接口
WCF开发框架-客户端采用BASIC身份认证调用HTTPS协议WCF接口
WCF开发框架-客户端采用Certificate认证模式调用基于HTTPS协议的WCF接口
C# ASP.NET WebApi服务器搭建详解 - Win服务承载Windows Service Hosting宿主)
WCF快速开发框架 - IIS承载WCF http协议BasicTcpBinding配置详解
WCF开发框架默认连接:HTTP协议+Message安全模式+Windows客户端认证
CSFramework.WebApi后端开发框架服务器宿主承载方式
WCF顶级安全:HTTPS协议SSL证书+Windows认证+TransportWithMessageCredential安全模式
WebApi开发框架:Token生成、Token缓存原理、Token验证、令牌机制与原理

热门标签
.NET5 .NET6 .NET7 APP Auth-软件授权注册系统 Axios B/S B/S开发框架 Bug Bug记录 C#加密解密 C#源码 C/S CHATGPT CMS系统 CodeGenerator CSFramework.DB CSFramework.EF CSFrameworkV1学习版 CSFrameworkV2标准版 CSFrameworkV3高级版 CSFrameworkV4企业版 CSFrameworkV5旗舰版 CSFrameworkV6.0 DAL数据访问层 Database datalock DbFramework Demo教学 Demo下载 DevExpress教程 DOM EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR IDatabase IIS JavaScript LINQ MES MiniFramework MIS NavBarControl Node.JS NPM OMS ORM PaaS POS Promise API Redis SAP SEO SQL SQLConnector TMS系统 Token令牌 VS2022 VSCode VUE WCF WebApi WebApi NETCore WebApi框架 WEB开发框架 Windows服务 Winform 开发框架 Winform 开发平台 WinFramework Workflow工作流 Workflow流程引擎 版本区别 报表 踩坑日记 操作手册 代码生成器 迭代开发记录 基础资料窗体 架构设计 角色权限 开发sce 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 秘钥 密钥 权限设计 软件报价 软件测试报告 软件简介 软件开发框架 软件开发平台 软件开发文档 软件体系架构 软件下载 软著证书 三层架构 设计模式 生成代码 实用小技巧 收钱音箱 数据锁 数据同步 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 详细设计说明书 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序