HTTPS原理及交互过程_第1页
HTTPS原理及交互过程_第2页
HTTPS原理及交互过程_第3页
HTTPS原理及交互过程_第4页
HTTPS原理及交互过程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

千里之行,始于足下。第2页/共2页精品文档推荐HTTPS原理及交互过程1HTTP及HTTPS

HTTP是一具客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。经过使用Web扫瞄器、网络爬虫或者其它的工具,客户端发起一具到服务器上指定端口(默认端口为80)的HTTP请求。(我们称那个客户端)叫用户代理(useragent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像,本质上是一种别安全的请求交互方式。

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单说是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就需要SSL。它是一具URIscheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https://URL表明它使用了HTTP,但HTTPS存在别同于HTTP的默认端口及一具加密/身份验证层(在HTTP与TCP之间)。那个系统的最初研发由网景公司(Netscape)举行,并内置于其扫瞄器NetscapeNavigator中,提供了身份验证与加密通讯办法。如今它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

2HTTP和HTTPS区不

https协议需要到ca申请证书,普通免费证书非常少,需要交费。

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议http和https使用的是彻底别同的连接方式用的端口也别一样:前者是80,后者是443。

http的连接非常简单,是无状态的HTTPS协议是由SSL+HTTP协议构建的可举行加密传输、身份认证的网络协议要比http协议安全

HTTPS解决的咨询题:

(1)信任主机的咨询题。

采纳https的server必须从CA申请一具用于证明服务器用途类型的证书。

该证书惟独用于对应的server的时候,客户度才信任次主机。因此目前所有的银行系统网站,关键部分应用基本上https的。客户经过信任该证书,从而信任了该主机。事实上如此做效率非常低,然而银行更侧重安全。这一点对我们没有任何意义,我们的server,采纳的证书别管自个儿issue依然从公众的地点issue,客户端基本上自个儿人,因此我们也就确信信任该server。

(2)通讯过程中的数据的泄密和被窜改。

1)普通意义上的https,算是server有一具证书。

a)要紧目的是保证server算是他声称的server。那个跟第一点一样。

b)服务端和客户端之间的所有通讯,基本上加密的。

i、具体说,是客户端产生一具对称的密钥,经过server的证书来交换密钥。普通意义上的握手过程。

ii、加下来所有的信息往来就基本上加密的。第三方即使截获,也没有任何意义。因为他没有密钥。固然窜改也就没有啥意义了。

2)少许对客户端有要求的事情下,会要求客户端也必须有一具证书。

a)这个地方客户端证书,事实上就类似表示个人信息的时候,除了用户名/密码,还有一具CA认证过的身份。应为个人证书普通来讲上不人无法模拟的,所有如此可以更深的确认自个儿的身份。

b)目前少数个人银行的专业版是这种做法,具体证书也许是拿U盘作为一具备份的载体。像我用的交通银行的网上银行算是采取的这种方式。HTTPS一定是繁琐的。

a)本来简单的http协议,一具get一具response。由于https要还密钥和确认加密算法的需要。单握手就需要6/7个往返。

i、任何应用中,过多的roundtrip确信妨碍性能。

b)接下来才是具体的http协议,每一次响应或者请求,都要求客户端和服务端对会话的内容做加密/解密。

i、虽然对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有特意的SSL芯片。假如CPU信能比较低的话,确信会落低性能,从而别能serve更多的请求。

附:SSL的简介:

SSL是Netscape公司所提出的安全保密协议,在扫瞄器(如InternetExplorer、NetscapeNavigator)和Web服务器(如Netscape的NetscapeEnterpriseServer、ColdFusionServer等等)之间构造安全通道来举行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,它采纳了RC4、MD5以及RSA等加密算法,使用40位的密钥,适用于商业信息的加密。

并且,Netscape公司相应开辟了HTTPS协议并内置于其扫瞄器中,HTTPS实际上算是SSLoverHTTP,它使用默认端口443,而别是像HTTP那样使用端口80来和TCP/IP举行通信。HTTPS协议使用SSL在发送方把原始数据举行加密,然后在同意方举行解密,加密和解密需要发送方和同意方经过交换共知的密钥来实现,所以,所传送的数据别容易被网络黑客截获和解密。

但是,加密和解密过程需要耗费系统大量的开销,严峻落低机器的性能,相关测试数据表明使用HTTPS协议传输数据的工作效率惟独使用HTTP协议传输的十分之一。

如果为了安全保密,将一具网站所有的Web应用都启用SSL技术来加密,并使用HTTPS协议举行传输,这么该网站的性能和效率将会大大落低,而且没有那个必要,因为普通来讲并别是所有数据都要求这么高的安全保密级不,因此,我们只需对那些涉及机密数据的交互处理使用HTTPS协议,如此就做到鱼与熊掌兼得。总之别需要用https的地点,就尽可能别要用。

3HTTPS工作原理

HTTPS事实上是有两部分组成:HTTP+SSL/TLS,也算是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会经过TLS举行加密,因此传输的数据基本上加密后的数据。具体是怎么举行加密,解密,验证的,且看下图。

HTTPS在传输数据之前需要客户端(扫瞄器)与服务端(网站)之间举行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议别仅仅是一套加密传输的协议,更是一件通过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以

这个地方扫瞄器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,同时能够正常的加密解密数据,为后续真正数据的传输做一次测试。另外,HTTPS普通使用的加密与HASH算法如下:

HTTPS对应的通信时序图如下:

附:HTTPS请求示例代码

importjava.io.*;

import.*;

importjava.security.cert.CertificateException;

importjava.security.cert.X509Certificate;

import.ssl.*;

publicclassTrustSSL{

privatestaticclassTrustAnyTrustManagerimplementsX509TrustManager{

publicvoidcheckClientTrusted(X509Certificate[]chain,StringauthType)

throwsCertificateException{

}

publicvoidcheckServerTrusted(X509Certificate[]chain,StringauthType)

throwsCertificateException{

}

publicX509Certificate[]getAcceptedIssuers(){

returnnewX509Certificate[]{};

}

}

privatestaticclassTrustAnyHostnameVerifierimplementsHostnameVerifier{publicbooleanverify(Stringhostname,SSLSessionsession){

returntrue;

}

}

publicstaticvoidmain(String[]args)throwsException{

InputStreamin=null;

OutputStreamout=null;

byte[]buffer=newbyte[4096];

Stringstr_return="";

try{

SSLContextsc=SSLContext.getInstance("SSL");

sc.init(null,newTrustManager[]{newTrustAnyTrustManager()},

newjava.security.SecureRandom());

URLconsole=newURL("88/testServlet?username=admin");

HttpsURLConnectionconn=(HttpsURLConnection)console.openConnection();

conn.setSSLSocketFactory(sc.getSocketFactory());

conn.setHostnameVerifier(newTrustAnyHostnameVerifier());

conn.connect();

InputStreamis=conn.getInputStream();

DataInputStreamindata=newDataInputStream(is);

Stringret="";

while(ret!=null){

ret=indata.readLine();

if(ret!=null&&!ret.trim().equals("")){

str_return=str_return+newString(ret.getBytes("ISO-8859-1"),"UTF-8");

}

}

conn.disconnect();

}catch(ConnectExceptione){

System.out.println("ConnectException");

System.out.println(e);

throwe;

}catch(IOExceptione){

System.out.println("

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论