在我前面介绍的WebAPI文章里面,介绍了WebAPI的架构设计方面的内容,其中提出了如今流行的WebAPI优先的路线,这种也是咱们开发多应用(APP、微信、微网站、商城、以及Winform等方面的整合)的时候值得考虑的线路之一。通常状况下,因为HTTP协议的安全性,传递的参数容易被拦截,从而可能致使潜在的危险,因此通常WebAPI接口层都采用了HTTPS协议的,也就是采用SSL层来对数据进行安全性的加密的。html
1) HTTPS算法
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL代表它使用了HTTPS,但HTTPS存在不一样于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通信方法,如今它被普遍用于万维网上安全敏感的通信,例如交易支付方面。浏览器
2)HTTPS和HTTP的区别安全
1、https协议须要到ca申请证书,通常免费证书不多,须要交费。服务器
2、http是超文本传输协议,信息是明文传输,https 则是具备安全性的ssl加密传输协议。微信
3、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。网络
4、http的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。架构
3)https的实现原理框架
有两种基本的加解密算法类型dom
1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
2)非对称加密:密钥成对出现(且根据公钥没法推知私钥,根据私钥也没法推知公钥),加密解密使用不一样密钥(公钥加密须要私钥解密,私钥加密须要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
https的通讯过程
4) https通讯的优势
1)客户端产生的密钥只有客户端和服务器端能获得;
2)加密的数据只有客户端和服务器端才能获得明文;
3)客户端到服务端的通讯是安全的。
1)SSL安全套接层协议(Secure Socket Layer)
为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程当中不会被截取及窃听。目前通常通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之IE或Netscape浏览器便可支持SSL。
当前版本为3.0。它已被普遍地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各类应用层协议之间,是一种国际标准的加密及身份认证通讯协议,为TCP提供一个可靠的端到端的安全服务,为两个通信个体之间提供保密性和完整性(身份鉴别)。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它创建在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它创建在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。
1)SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telnet的通讯,最多见的是用SSL来保护HTTP的通讯。
2)SSL协议的优势在于它是与应用层协议无关的。高层的应用协议(如HTTP、FTP、Telnet等)能透明地创建于SSL协议之上。
3)SSL协议在应用层协议以前就已经完成加密算法、通讯密钥的协商以及服务器的认证工做。在此以后应用层协议所传送的数据都会被加密,从而保证通讯的安全性。
4)SSL协议使用通讯双方的客户证书以及CA根证书,容许客户/服务器应用以一种不能被偷听的方式通讯,在通讯双方间创建起了一条安全的、可信任的通讯通道。
5)该协议使用密钥对传送数据加密,许多网站都是经过这种协议从客户端接收信用卡编号等保密信息。经常使用于交易过程当中。
3)SSL功能
1)客户对服务器的身份认证:
SSL服务器容许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。
2)服务器对客户的身份认证:
也可经过公钥技术和证书进行认证,也可经过用户名,password来认证。
3)创建服务器与客户之间安全的数据通道:
SSL要求客户与服务器之间的全部发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性。
上面介绍一些基础知识,咱们能够简单的归纳一下,就是引入了HTTPS,能够很好解决接口参数的安全性问题。这些在不少大厂商的接口里面,都是使用HTTPS协议的,如腾讯微信、支付宝等接口,特别对于支付内容,使用HTTPS是必须的。
对于支持HTTPS,核心的问题就是解决证书的问题,必须是由第三方权威机构颁发的证书,这样才能达到不被伪造的可能性,通常咱们采用的是CA证书,这些证书是须要经过付费购买的(天下没有免费的午饭),证书的购买的供应商网站有不少,能够选择本身合适的进行购买。
1)国外的GoDaddy平台购买证书过程
这个参考博客园站长dudu的介绍内容,这个goDaddy是支持支付宝用美圆购买的,使用平台是英文,能够购买域名、证书等服务,是一个影响力较大的厂商。
1) 打开godaddy.com网站,经过菜单进入Products -> SSL&Security -> SSL Certificates,选择Protect All Subdomains("Wildcard"), 在Pick your plan type中,选择Standard(Validates domain ownership),而后完成购买。
2)进入My Account -> SSL CERTIFICATES,建立证书(Certificate),建立时将以前获得的CSR内容复制到“CSR文本框”中。
3)接入来进入GoDaddy的审批流程,在审批过程当中须要验证域名的全部者(dns填加记录或上传html文件至网站目录),验证成功后很快就会生成CA证书。
4)下载CA证书文件至生成CSR的服务器上。
普通证书费用是63美圆左右,能够经过支付宝进行交易。
2)国内沃通平台购买证书过程
这个是纯中文版本的平台,比较方便使用,费用也比上面的贵一些,分的级别好像也多一些,相对上面那个国外的GoDaddy的三个种类证书,这个产品线分了6个类型。最低的也要接近500块,相对GoDaddy来讲,费用要多一些了。因为是初步使用,也就购买了这个使用了。
申请购买也很简单,一步步按提示操做填写内容便可,大体分为这几步:
1)输入购买的证书类型,以及年限等资料;
2)输入域名的信息,以及须要域名对应的邮件进行验证;
3)提交购买订单后,使用在线支付或者使用公司帐号汇款到指定帐号;
4)客服验证后,技术人员提供证书生成操做,咱们在列表里面尽快使用证书密码下载证书。
最后成功后,在订单信息里面,有这样的列表,提供了两个SHA1和SHA2两种加密协议的证书,官方建议使用SHA2。
有了证书,咱们在云服务器上(如阿里云)的IIS里面的证书模块里面,能够导入已有的证书。
导入证书成功后,咱们能够看到列表里面有具体的证书了,同时双击能够查看证书详细信息。
建立一个网站,并指定使用这个证书,端口采用443便可。
通常状况下,咱们建立这个步骤后,你可使用相似这样地址:https://www.iqidi.com/测试下具体的网站是否已经开通了,若是能够正常访问,那说明你的443端口已经启动侦听了,若是没有,多是没有启动,或者是防火墙禁止了,通常状况下,咱们仍是须要在防火墙里面增长443端口的入站规则,设置为容许,不然可能被屏蔽了。
若是都设置了,能够经过DOS命令行来检查端口是否已经开始侦听了。
查询443端口监听
netstat -ano | find "443"
若是仍是有问题,能够请求CA证书的供应商或者云供应商的技术人员帮你看看,通常都是会配合你解决的,个人开始也是折腾了他们一会,最后也莫名其妙的能够了。
最后成功后,在Chrome浏览器里面打开地址就有绿色的标志了。
因为目前个人API平台还在搭建完善中,所以这个域名展现仍是没有东西能够展现的。
最后的构架会如前面Web API框架图所示,作到一个统一的整合方案里面。
因为Web API层做为一个公共的接口层,咱们就很好保证了各个界面应用层的数据一致性,若是考虑到响应式的集成处理,咱们甚至能够把微信应用、APP应用、Web应用作层一套Web程序,即便为了利用各自应用的特殊性,也能够把这些应用作的很类似,这样就给用户提供了一个统一的界面表示方式,极大提升客户使用的界面体验效果,用户几乎不须要额外的界面学习,就能够熟悉整个应用体系的各个模块使用。
从上面的架构分析来看,咱们的Web API做为核心层,能够在上面开发咱们各类企业业务应用,
在目前比较热门的会员管理、客户管理等方面,结合微信的应用催化剂,就能够作的更加符合移动的潮流,从而实现咱们“互联网+”的应用落地。