第一步 创建受信任的根证书颁发机构
makecert.exe -n "CN=Development CA" -r -sv DevelopmentCA.pvk DevelopmentCA.cer
并将证书导入到证书管理,特别要注意的是必须是“证书-本地计算机”,而非当前用户
第二步 利用刚才创建的根证书来创建证书的pfx格式 ,第一条命令创建证书,第二条命令将转换为pfx格式并包含私钥,“123456”为私钥密码
makecert.exe -pe -n "CN=localhost" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic DevelopmentCA.cer -iv developmentCA.pvk -sv SSLCert.pvk SSLCert.cer
pvk2pfx -pvk SSLCert.pvk -spc SSLCert.cer -pfx SSLCert.pfx -po 123456
导入证书到本地计算机个人证书
第三步 生成客户端证书,执行命令之后客户端证书自动会添加到“证书-当前用户”个人证书里
makecert.exe -pe -ss My -sr CurrentUser -a sha1 -sky exchange -n "CN=ClientCertificatesTest"
-eku 1.3.6.1.5.5.7.3.2 -sk SignedByCA -ic DevelopmentCA.cer -iv DevelopmentCA.pvk
第四步 证书生成完毕后配置IIS,在网站中添加绑定选择https类型,SSL证书选择我们刚才创建的
第五步 更改SSL设置,我这里是设置了必须要求SSL,可根据自己的实际情况来选择
第六步 在程序中添加HTTPS过滤器,添加此特性的接口会先判断请求是否来自HTTPS
publicclassRequireHttpsAttribute : AuthorizationFilterAttribute
{
publicoverridevoid OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = newHttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
{
publicoverridevoid OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = newHttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
最后我们测试下SSL是否生效
publicstaticvoid Test()
{
var secure = newSecureString();
foreach (char s in"password") //password为导出的证书安全密码
{
secure.AppendChar(s);
}
var handler = newWebRequestHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.UseProxy = false;
string path = @"C:\test.pfx";
var certificate = newX509Certificate2(path, secure);
handler.ClientCertificates.Add(certificate);
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
using (var client = newHttpClient(handler))
using (var content = newMultipartFormDataContent())
{
var arg = 1;
var url = string.Format(@"https://localhost:4438/api/test?arg={0}",arg);
var result = client.PostAsync(url, content).Result.Content.ReadAsStringAsync();
Console.WriteLine(string.Format("[{0}]", result.Result));
}
{
var secure = newSecureString();
foreach (char s in"password") //password为导出的证书安全密码
{
secure.AppendChar(s);
}
var handler = newWebRequestHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.UseProxy = false;
string path = @"C:\test.pfx";
var certificate = newX509Certificate2(path, secure);
handler.ClientCertificates.Add(certificate);
ServicePointManager
.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
using (var client = newHttpClient(handler))
using (var content = newMultipartFormDataContent())
{
var arg = 1;
var url = string.Format(@"https://localhost:4438/api/test?arg={0}",arg);
var result = client.PostAsync(url, content).Result.Content.ReadAsStringAsync();
Console.WriteLine(string.Format("[{0}]", result.Result));
}
}
相关推荐
ASP.NET Web API是微软开发的一个用于构建RESTful服务的框架,它基于ASP.NET技术栈,广泛应用于构建Web应用程序和服务,尤其是对于移动应用、浏览器插件和服务器端数据交互。本教程《ASP.NET Web API设计》深入浅出...
ASP.NET Web API 2 Recipes provides you with the code to solve a full range of Web API problems and question marks that you might face when developing line-of-business applications. ASP.NET Web API 2 ...
《ASP.NET Web API设计》依托ASP.NET Web API阐述API设计与开发的通用技术,是一本全面介绍如何构建真实可演化API的实践指南。本书共分三部分。第一部分介绍Web/HTTP和API开发的基础知识,介绍ASP.NET Web API,为...
ASP.NET Web API 是微软开发的一个用于构建RESTful服务的框架,它可以轻松地为Web应用程序、移动设备和桌面应用提供数据接口。在ASP.NET Web API中处理文件上传是常见的需求,特别是当你需要允许用户通过Web界面提交...
本资源包含了该框架的详细揭秘以及完整的源代码,帮助开发者深入理解并实践ASP.NET Web API 2 的开发。 1. **RESTful架构**:ASP.NET Web API 2 遵循REST(Representational State Transfer)原则,通过HTTP方法...
第1章 S101 一个简单的ASP.NET Web API应用 第2章 S201 通过路由实现请求地址与.aspx页面的映射 S202 基本路由注册 S203 在路由注册中指定约束 S204 针对现有物理文件的路由(关闭) S205 针对现有物理文件的...
本文将深入探讨ASP.NET WebAPI2如何实现基于Token的令牌身份验证。 首先,我们需要理解Token的身份验证原理。这种机制下,用户登录后,服务器会生成一个唯一的Token,这个Token包含了一些关于用户的信息,经过加密...
在Asp.Net WebApi框架中,开发Web服务接口来处理文件上传是一项常见的任务。本教程将探讨两种不同的客户端上传方式:原生JavaScript和jQuery AJAX。这两种方法都可以与Asp.Net WebApi结合,实现用户友好的文件上传...
首先,需要了解的是WebAPI项目的基本创建流程,即通过Visual Studio创建一个新的*** Web Application (.NET Framework)项目,选择WebAPI作为项目模板。创建项目后,我们会在项目中看到一个名为ValuesController的...
在深入探讨ASP.NET Web API之前,我们先理解一下REST的基本概念。RESTful服务通过HTTP方法(GET、POST、PUT、DELETE等)来操作资源,并使用URI(Uniform Resource Identifier)作为资源的唯一标识。这种设计模式使得...
最新的Pro ASP.NET Web API HTTP Web Services in ASP.NET; 英文高清pdf; 2013年新书,学习ASP.NET Web API 现阶段最权威的一本专业教材; 前置技能:C#(掌握) , MVC(掌握或了解) ,数据库(掌握),HTML(掌握)...
asp.net WebAPI OWIN OAuth2.0授权自定义返回结果及错误或异常问题处理核心代码,详情: https://www.cnblogs.com/wgx0428/p/12315546.html
《ASP.NET Web API 2框架揭秘》一本注重实证的书,功能各异、多达120个可供下载的示例,大量最佳实践与实用性扩展,可直接用于解决实际开发问题。全新的学习方法,通过完整论证来实现彻底的融会贯通。本书可以作为讲...
ASP.NET Web API 2框架揭秘》一本注重实证的书,功能各异、多达120个可供下载的示例,大量最佳实践与实用性扩展,可直接用于解决实际开发问题。全新的学习方法,通过完整论证来实现彻底的融会贯通。
在 ASP.NET 编程中,Web API 是一个框架,可以很容易构建达成了广泛的 HTTP 服务客户端,包括浏览器和移动设备。是构建 RESTful 应用程序的理想平台的 .NET 框架。在本文中,我们将主要介绍 .NET Web API 接收 XML ...
这个实例将涵盖几个核心概念,帮助你理解如何有效地使用Asp.Net Web API。 1. **更改默认路由表**:在Asp.Net Web API中,路由是决定HTTP请求如何映射到控制器和操作的方法。默认情况下,路由模板为"api/{...
自己在研究ASP.NET WebAPI的过程中,为了方便自己调试,写了一个自测工具。 可以进行 application/json 协议的访问,也可以进行 application/x-www-form-urlencoded 协议的访问。 为了方便经常调试某个接口,可将 ...
标题提到的"ASP.NET Web API对list增删改查的实例",意味着我们将讨论如何使用Web API处理列表数据的常见操作。在.NET开发环境中,VS12(Visual Studio 2012)是常用的一款IDE,它支持创建和调试ASP.NET Web API项目...