微信小程序使用https协议的WebApi后端应用服务(Win服务宿主或自承载)
微信小程序使用https协议的WebApi后端应用服务(Win服务宿主或自承载)
由于最近微信小程序项目比较多,发布和部署微信小程序必须采用https协议,原http协议的WebApi接口访问不了的。直接将WebApi监听的地址修改为Https启动服务显然是不行的,必须借助证书绑定开启对应的端口才行。开始想到去申请的一个免费的证书,由于WebAPi安装在本地Windows服务中且IP地址不固定,所以免费的证书不可取,只能借助MakeCert命令自行创建证书来解决这个问题。希望给Self Hosting或Windows服务Hosting启动Https协议WebApi服务用户启示和帮助。 完整解决方案: 一、以管理员身份运行VS2015开发人员命令提示 二、生成证书,在命令窗体内执行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)】 三、打开MMC将创建的证书导入到【受信任的颁发证书机构】中 四、创建证书的私钥 cmd: Pvk2pfx -pvk CSFrameworkWebApiCA.pvk -spc CSFrameworkWebApiCA.cer -pfx CSFrameworkWebApiCA.pfx -po test //来源:C/S框架网(www.csframework.com) QQ:23404761 注意:-po 后面是密码,如:test 五、导入个人证书,必须选择个人信息交换(*.pfx文件格式) 六. 拿到该证书的指纹,获取证书指纹信息。 七、证书绑定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端口的绑定关系 netsh http delete sslcert ipport=0.0.0.0:19893 一旦删除证书绑定关系或者运行netsh http add sslcert失败,无法访问webapi接口资源,如下图: 查看端口是否已监听 运行WebApi服务器,输入命令:netstat -ano,列出所有端口的情况,可以查看端口是否已监听。 查看端口、证书绑定状态: netsh http show sslcert 八、测试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方式才出现上面的回应。 使用IE浏览器,网站标识与服务器的连接已加密,https协议以及证书正常。 WebAPI接口测试程序测试: 九、操作错误遇到的问题归集 若执行dos命令出现以下错误,【VS2015开发人员命令提示】必须以管理员身份运行! 若出现以下错误: 未能添加SSL证书,错误:1312,指定的登录会话不存在。可能已被终止。 解决方案:创建私钥,并导入个人证书,参考上面的步骤。 Google Crome浏览器调试错误NET::ERR_CERT_COMMON_NAME_INVALID 此服务器无法证实它就是 localhost - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。 出现上述问题的解决方案:给个人证书指定主题备用名称(友好名称) 技术研究以及发布文章前后花了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)
参考文档:
C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务自承载WebApi服务器) - C/S框架网原创 原创WebApi框架:采用HTTPS协议SelfHosting,Windows服务承载WebApi服务 CSFramework.WebApi框架快速搭建后端服务支持APP、B/S、C/S、微信小程序、公众号、Web客户端 微信小程序后端框架|微信公众号后端框架(C# WebAPI) 手把手搭建一个ASP.NET Core Web应用程序(默认HTTPS协议) 阿里云购买免费版个人SSL证书 - 微信小程序后端应用服务必须是HTTPS协议 CSFramework.WebApi后端框架Token令牌体系架构与应用详解 使用WebApi框架开发微信小程序后端程序详细设计说明书模板docx文件 WCF开发框架-IIS启用net.tcp协议发现不会自动执行Global应用程序解决方案 提供的URI方案http无效,应为https,参数名via - WCF服务采用HTTPS协议 【原创】WCF开发框架 - 采用wsHttpBinding及basicHttpBinding连接https协议的WCF服务 vs使用添加服务引用方式连接HTTPS协议的WCF服务 vs使用透明代理工厂方式调用HTTPS协议的WCF服务 WCF开发框架-客户端采用Certificate认证模式调用基于HTTPS协议的WCF接口 .Net开发服务器服务端应用程序 - WebApi后端开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |