ASP.NET Core Web API 与 SSL

SSL

一直没有真正研究过SSL,不知道下面的理解是否正确。

SSL是Secure Sockets Layer的缩写,它用来保护服务器和客户端之前的通信。它是基于信任+加密的概念。

在介绍SSL的原理之前,首先介绍一下加密(Encryption)的概念。

 

刷新:重新发现商业与未来

作者:(美)萨提亚·纳德拉(Satya Nadella)

当当 广告
购买

在很多的应用/API里,最常见的一种加密的方式是对称加密(Symmetric Encryption)

对称加密的原理是这样的:比如说甲方想要发送一些数据给某个调用者(乙方),乙方可能在某个进程或客户端服务器里,或者是跨越网络的。总之是两方通信。而甲方发送加密的数据需要一些加密的方法,这个加密方法双方必须都知道(例如AES),此外还需要一个secret,它是一个任意的字符串,加密方法需要使用secret来进行加密。使用这样的加密方法把数据加密,然后加密的数据就会被发给乙方。乙方在接受这个加密后的数据之后,需要同样的加密方法和同样的secret来进行解密。所以对称加密的弱点也就在这,这个secret需要在双方共享。

640?wx_fmt=png

 

而对于SSL来说,它还可以使用第二种加密方式:非对称加密(Asymetric Encryption)

非对称加密的原理是这样的,它也需要加密方法来对数据进行加密,但加密的时候使用的是public key

,这个public key是从乙方那里获得的;它实际就是一个secret,但是这个secret并没有被保护,所以乙方并不担心甲方或其他方使用它来进行解密,因为public key不可以用来解密,它只能用来进行加密。而当乙方接收到加密数据之后,它使用private key来进行解密,这个private key是保密的,别人不知道的,这样乙方就可以得到解密后的数据。

所以非对称加密的优势还是很明显的。

640?wx_fmt=png

 

SSL使用这两种加密方式。

当客户端和(Web)服务器使用SSL进行通信前会有一个SSL握手的操作,用户是不会察觉这个动作的,它发生在真正调用API之前。

640?wx_fmt=png

当客户端开始请求(https)后,服务器首先返回的是证书。

证书里面包含了很多的信息,这些信息首先就可以用来对证书本身进行信任确认。证书里包含了一些承诺:包括这个证书来自受信任的源。例如你使用SSL请求Microsoft.com,那么返回的证书就会对你承诺:“这个服务器是被微软所拥有的”等。证书还会包含着“谁可以保证这些信息的真实性”的信息。这里还有一个证书颁发机构(Certificate Authority,CA)的列表,这些机构是我不得不信任的,证书颁发机构可以保证这些信息等真实性。这里的证书就是由这些机构来签发的。通常浏览器都会加载这些知名证书颁发机构的根证书。这些机构维护着一个所有已签名证书的列表和已经被吊销的证书的列表。未签名的证书是不安全的,已签名的证书是不可以被修改的。自己签名的证书叫自签名证书。所有的根证书颁发机构的证书都是自签名的。

服务器返回证书的同时还返回了一个public key,浏览器根据信任的CA来检查证书是否仍然有效并且和该网站仍然关联。

如果浏览器最终信任了这个证书,那么它会使用这个public key来生成加密一个随机的对称加密key并把它使用加密的URL和HTTP数据一同送回到服务器。

服务器通过它的private key来对这个对称的加密key进行解密,随后用解密出来的对称key来解密URL和HTTP数据。然后服务器会使用这个对称加密key发出一个加密确认,接下来加密的对话就可以开始了,后续的通信都是使用这个对称key。

那么为什么整个通信不都使用非对称加密呢?因为它比较消耗资源。所以非对称加密只用在SSL握手阶段来创建一个后续对话的对称加密key,后续的通信都是使用这个对称key来加密传输的数据。

 

在ASP.NET Core中启用HTTPS 

HTTPS (也叫做 HTTP over TLS, HTTP over SSL, and HTTP Secure),它的传输协议使用TLS(SSL)加密

下面都是官方文档的内容。

官方建议ASP.NET Core应用使用HTTPS重定向中间件来把所有的HTTP请求都重定向到HTTPS上。

而实际上,ASP.NET Core 2.1的webapi模版里已经这样做了:

640?wx_fmt=png

此外还可以在ConfigureServices方法里配置该中间件:

640?wx_fmt=jpeg

这里把返回到状态码设为307,这其实是默认值。而生产环境应该调用 UseHsts方法。

然后把Https的端口设置为5001,默认值是443。

 

注意:需要同时监听http和https的端口

 

运行程序,使用POSTMAN发出一个GET请求到ValuesController:

640?wx_fmt=png

没有返回任何响应,这是因为POSTMAN到设置问题。请按照下图修改POSTMAN到配置:

640?wx_fmt=png

把SSL certificate verification一项设置成 OFF。

然后再发送GET请求就OK了:

640?wx_fmt=png

 

这里面有一个重定向到过程,我们改一下POSTMAN到设置来看一下这个过程:

640?wx_fmt=png

把Automatically follow redirects改为OFF。

然后发送HTTP的请求:

640?wx_fmt=png

它返回的body是空的,Header里面有重定向的地址,状态码是307,也就是我之前配置的。

然后我再发送请求到Header里Location到这个地址就会得到想要到结果,我就不贴图了。

原文地址:http://www.cnblogs.com/cgzl/p/9202174.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P5662-纪念品【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5662 题目大意 有TTT天,nnn个纪念品,每个纪念品每天的价格不同,数量不限。开始小明有mmm块钱,求最后一天的最多钱。 解题思路 因为一个纪念品可以一天卖出并且一天买入&#…

【模拟】聊天服务器的外部流量

聊天服务器的外部流量 题目大意: 有一个通讯系统,可以将某人邀请进来(name),也可以将某人T出去(-name),也可以向群中的所有人发一条信息(name:…&#xff0…

线段树-Pudding Monster CF526F-单调栈

Pudding Monster 题目连接:https://www.luogu.org/problem/show?pidCF526F 问题提出 给长度为nnn的排列AAA.问有多少(l,r)(l,r)(l,r),使得将Al,Al1,...,ArA_l,A_{l1},...,A_rAl​,Al1​,...,Ar​排序之后是连续的一段数.n≤105n \le 10^5n≤105 问题解决 判断一段区间是否…

P5664-Emiya家今天的饭【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5664 题目大意 对于nnn个方法,mmm个材料,一个方法配对一个材料可以做an,ma_{n,m}an,m​道菜。选择kkk个配对要求 配对至少为k>1k>1k>1每个配对的方法不同每个材料最多用⌊k2⌋\lfloor\frac…

GitHub宣布GitHub Education 新计划,学校可免费用企业版

今天 GitHub 宣布面向所有学校和教育机构开放 GitHub Education,方便学生和老师免费使用 GitHub 企业版功能,以及学生开发者工具包、GitHub 教室、培训等资源。2014 年,GitHub 推出了学生开发者工具包,其中包括 Azure 等云服务、G…

【dfs】聚会

聚会 题目大意&#xff1a; 有一些树&#xff0c;求深的树的深度 原题 解题思路&#xff1a; 从一个根出发&#xff0c;dfs往下搜 代码&#xff1a; #include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,t,g,w,ans,c[2…

P3960-列队【权值线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P3960 题目大意 n∗mn*mn∗m的队列&#xff0c;起初站在第(i,j)(i,j)(i,j)位置的人编号是(i−1)∗nj(i-1)*nj(i−1)∗nj。然后每次选择一个人出队后所有人向左补齐后所有人向前补齐&#xff0c;然后刚刚出列的那个人入队。 求…

2018 大湾区(深圳) .NET技术分享交流会 第一期

.NET Core 2.1 已于2018年5月30日正式发布&#xff0c;邀请粤港澳大湾区.NET技术专家和从业人员&#xff0c;一起分享与交流.NET技术的发展方向&#xff0c;提高粤港澳大湾区.NET技术交流氛围&#xff0c;挖掘.NET高级人才&#xff0c;为改善.NET生态系统贡献力量&#xff0c;使…

线段树-Mex-洛谷P4137

Mex 问题提出 有一个长度为nnn的数组{a1,a2,…,an}\{a_1,a_2,…,a_n\}{a1​,a2​,…,an​}。mmm次询问&#xff0c;每次询问一个区间内最小没有出现过的自然数。 题目解答 对1−n1-n1−n这里能够的每个数xxx,都统计出来在数组中出现的位置,并在前补上000,在后补上n1n1n1. …

卡车

卡车 题目大意&#xff1a; 有一个卡车向里面放东西&#xff08;重量要么是一要么是二&#xff09;&#xff0c;价值不同&#xff0c;放的东西的价值之和最大是多少 原题&#xff1a; 解题思路&#xff1a; 看看数据就知道DP会MLE&#xff0c;所以要用排序来做&#xff0c;…

P2831-愤怒的小鸟【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P2831 题目大意 nnn个点&#xff0c;每次可以射掉在函数yax2bxyax^2bxyax2bx上的点&#xff08;a,ba,ba,b自定但是要求a<0a<0a<0&#xff09;。求最少射击次数。 解题思路 考虑状压&#xff0c;我们发现如果一次射掉…

初一级模拟赛总结(3.15)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf220220220100100100100100100000202020222fyfyfy150150150000100100100000505050333lthlthlth120120120100100100202020000000444hkyhkyhky100100100000100100100000000444tjhtj…

从明面上学习ASP.NET Core

一、前言这篇文章就是从能看到地方去学习Core&#xff0c;没有很深奥&#xff0c;也没有很难懂&#xff0c;现在我们开始吧。二、构建项目&#xff0c;引发思考创建项目的步骤真的很简单&#xff0c;你要是不会&#xff0c;我真也没法了&#xff0c;我这是创建的MVC的项目。接下…

线段树-区间的交

区间的交 题目来源 孙耀峰Segment_Tree.pdf 原创 题目描述 给定nnn个区间,[li,ri][l_i,r_i][li​,ri​],可以选出其中一些区间,设选出tottottot个,令xxx表示这tottottot个区间交的长度.求min{x,tot}min\{x,tot\}min{x,tot}n≤105,1≤xi≤yi≤nn \le 10^5,1 \le x_i \le y_i…

【DP】收银员

收银员 题目大意&#xff1a; 有n件物品&#xff0c;每件物品有他的扫描时间和价格&#xff0c;在扫描的时候可以偷物品&#xff08;一个单位时间偷一件&#xff09;&#xff0c;问最少给多少钱 原题&#xff1a; 解题思路&#xff1a; 设f[j]为偷或买共j件花的最少钱&…

P5020-货币系统【背包】

正题 题目链接:https://www.luogu.com.cn/problem/P5020 题目大意 定义S(A)S(A)S(A)表示集合AAA内的若干个数字和&#xff08;可以重复使用&#xff09;可以表示的集合 nnn个数的集合FFF&#xff0c;求一个最小的集合G⊆FG\subseteq FG⊆F且S(F)S(G)S(F)S(G)S(F)S(G)。 解题思…

线段树-Chossing Ads-分治,主元素思想,神题

Choosing Ads 问题提出 给出长度为nnn的序列AAA,以及数ppp(20≤p≤10020\le p \le 10020≤p≤100)QQQ次操作,两种类型 (1,l,r)(1,l,r)(1,l,r),区间赋值为vvv(2,l,r)(2,l,r)(2,l,r),区间出现频率≥p%\ge p\%≥p%的数 n,Q≤105n,Q \le 10^5n,Q≤105 问题解答 非常巧妙的一道题…

P2679-子串【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P2679 题目大意 长度为nnn的字符串AAA和长度为mmm的字符串BBB&#xff0c;要求从AAA中截取kkk个不重复的非空子串使得他们按顺序拼接起来是字符串BBB。求方案数。 解题思路 设fi,j,k,0/1f_{i,j,k,0/1}fi,j,k,0/1​表示AAA到…

【字符串】字符串

字符串 题目大意&#xff1a; 有一个字符串&#xff0c;问有子串“bear”的子串有多少个 原题&#xff1a; 题目描述 小熊有一个由小写英文字母组成的字符串s s1s2…sn。小熊想要计算s中有多少子串包含字符串“bear”&#xff0c;也就是找出满足字符串x(i, j) sisi1…sj …

.Net Core小技巧 - Swagger适配虚拟目录及二级目录

前言随着前后端分离模式与微服务架构的出现&#xff0c;Web API变得越来越重要及普遍。而后出现的网关技术&#xff0c;使开发者更倾向于使用二级/多级目录来暴露Web API&#xff0c;一是暴露的端口更少&#xff0c;方便管理&#xff1b;二是在网关中可以处理一些公共的事务&am…