商丘做网站,商丘网站优化,商丘网络推广,商丘网络公司
当前位置:首页 > 新闻资讯 > 建站经验 >

HTTPS连接过程以及中间人攻击劫持

发表日期:2018-01-14 19:52聚圣源浏览次数: 本文关键词:HTTPS,连接,过程,以及,中间人,攻击,劫持,一,、,

  一 、HTTPS连接过程及中间人攻击原理

  https协议就是http+ssl协议,如下图所示为其连接过程:

  

HTTPS连接过程以及中间人攻击劫持

  1.https请求

  客户端向服务端发送https请求;

  2.生成公钥和私钥

  服务端收到请求之后,生成公钥和私钥。公钥相当于是锁,私钥相当于是钥匙,只有私钥才能够打开公钥锁住的内容;

  3.返回公钥

  服务端将公钥(证书)返回给客户端,公钥里面包含有很多信息,比如证书的颁发机构、过期时间等等;

  4.客户端验证公钥

  客户端收到公钥之后,首先会验证其是否有效,如颁发机构或者过期时间等,如果发现有问题就会抛出异常,提示证书存在问题。如果没有问题,那么就生成一个随机值,作为客户端的密钥,然后用服务端的公钥加密;

  5.发送客户端密钥

  客户端用服务端的公钥加密密钥,然后发送给服务端。

  6.服务端收取密钥,对称加密内容

  服务端收到经过加密的密钥,然后用私钥将其解密,得到客户端的密钥,然后服务端把要传输的内容和客户端的密钥进行对称加密,这样除非知道密钥,否则无法知道传输的内容。

  7.加密传输

  服务端将经过加密的内容传输给客户端。

  8.获取加密内容,解密

  客户端获取加密内容后,用之前生成的密钥对其进行解密,获取到内容。

  中间人劫持攻击

  https也不是绝对安全的,如下图所示为中间人劫持攻击,中间人可以获取到客户端与服务器之间所有的通信内容。

  HTTPS连接过程以及中间人攻击劫持

  中间人截取客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信;将服务器返回给客户端的内容发送给客户端,伪装成服务器与客户端进行通信。

  通过这样的手段,便可以获取客户端和服务器之间通信的所有内容。

  使用中间人攻击手段,必须要让客户端信任中间人的证书,如果客户端不信任,则这种攻击手段也无法发挥作用。

  二、中间人攻击的预防

  造成中间人劫持的原因是 没有对服务端证书及域名做校验或者校验不完整,为了方便,直接采用开源框架默认的校验方式进行https请求

  如volley

  HTTPS连接过程以及中间人攻击劫持

  HTTPS连接过程以及中间人攻击劫持

  OKhttp3.0

  HTTPS连接过程以及中间人攻击劫持

  预防方法:

  预防方式有两种

  1 、针对安全性要求比较高的 app,可采取客户端预埋证书的方式锁死证书,只有当客户端证书和服务端的证书完全一致的情况下才允许通信,如一些银行类的app,但这种方式面临一个问题,证书过期的问题,因证书有一定的有效期,当预埋证书过期了,只有通过强制更新或者要求用户下载证书来解决。

  以volley为例:校验的实现方式如下

  通过预埋证书创建 SSLSocketFactory;

  private static SSLSocketFactory buildSSLSocketFactory(Context context,

  int certRawResId) {

  KeyStore keyStore = null;

  try {

  keyStore = buildKeyStore(context, certRawResId);

  } catch (KeyStoreException e) {

  e.printStackTrace();

  } catch (CertificateException e) {

  e.printStackTrace();

  } catch (NoSuchAlgorithmException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

  String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();

  TrustManagerFactory tmf = null;

  try {

  tmf = TrustManagerFactory.getInstance(tmfAlgorithm);

  tmf.init(keyStore);

  } catch (NoSuchAlgorithmException e) {

  e.printStackTrace();

  } catch (KeyStoreException e) {

  e.printStackTrace();

  }

  SSLContext sslContext = null;

  try {

  sslContext = SSLContext.getInstance("TLS");

  } catch (NoSuchAlgorithmException e) {

  e.printStackTrace();

  }

  try {

  sslContext.init(null, tmf.getTrustManagers(), null);

  } catch (KeyManagementException e) {

  e.printStackTrace();

  }

  return sslContext.getSocketFactory();

  生成 经过ssl校验及 域名校验的connection

  HTTPS连接过程以及中间人攻击劫持

  HTTPS连接过程以及中间人攻击劫持

  2 针对安全性要求一般的app,可采用通过校验域名,证书有效性、证书关键信息及证书链的方式

  以volley为例,重写HTTPSTrustManager 中的checkServerTrusted 方法,同时开启域名强校验

  三、Webview的HTTPS安全

  目前很多应用都用webview加载H5页面,如果服务端采用的是可信CA颁发的证书,在 webView.setWebViewClient(webviewClient) 时重载 WebViewClient的onReceivedSslError() ,如果出现证书错误,直接调用handler.proceed()会忽略错误继续加载证书有问题的页面,如果调用handler.cancel()可以终止加载证书有问题的页面,证书出现问题了,可以提示用户风险,让用户选择加载与否,如果是需要安全级别比较高,可以直接终止页面加载,提示用户网络环境有风险:

  HTTPS连接过程以及中间人攻击劫持

  不建议直接用handler.proceed()。如果webview加载https需要强校验服务端证书,可以在 onPageStarted() 中用 HttpsURLConnection 强校验证书的方式来校验服务端证书,如果校验不通过停止加载网页。当然这样会拖慢网页的加载速度,需要进一步优化,具体优化的办法不在本次讨论范围,这里也不详细讲解了。

如没特殊注明,文章均来自网络! 转载请注明来自:http://www.jushengyuan.com.cn/news/jzjy/9850.html

网站设计案例推荐

热门文章

站长工具综合查询里面SSL证书不...

SSL证书不安全是怎么回事?但是点进去这个提示后,显示的是别人的tdk是不是被劫持或者被黑了?...

日期:2018-03-27 浏览次数:1881

简洁而实用的版权信息可增色网...

打开网站,人们自然会从上往下浏览,首先映入眼帘的一定是BANNER主视觉,然后是网站主体内容部分。相比较而言,注意到网站底部版权信息的浏览者确实不多,但这并说明网站版权信...

日期:2018-03-05 浏览次数:1873

网站设计需要注意的3点问题...

对于网站设计来讲会受到很多因素的影响,而且不同类型的网站,在设计时需要体现的元素也不一样,比如说对于一个企业网站更想体现出品牌以及产品的特点,主要是对产品、企业信...

日期:2018-02-12 浏览次数:1803

企业网站为什么要改版 改版选择...

网站改版,是每个建站企业必须面临的工作。相信也有不少站长问,已经做好的企业网站,为何还要大费周章重新进行改版设计呢?下面小编就来给大家说说,企业究竟为什么要改变,并...

日期:2018-03-26 浏览次数:1332

永城网站制作:模板建站不可不...

随着互联网建站尤其是自助建站热潮不断高涨,建站行业涌现出越来越多的自助建站平台,这些平台普遍都提供网站模板可选。...

日期:2018-04-30 浏览次数:931

相关文章

教你把HTTP网站免费转成HTTPS网站...

关于HTTPS和HTTP的区别,以及HTTPS的优势、HTTPS和SSL之间的关系等,本文不做任何讨论,感兴趣的可以自行百度。本文只用来记录作为一个外行人,如何一步步构建自己的HTTPS服务器的过程...

日期:2018-01-14 浏览次数:72

从输入 URL 到页面加载完成,这...

在本文中,我将简单阐述一下从输入 URL 到页面加载完成的整个过程。作为互联网从业者,不管你属于何种职位,都应该有所了解。 操作的过程很简单:打开浏览器,在地址栏中键盘输...

日期:2018-01-14 浏览次数:65

百度发布《移动搜索建站优化白...

《百度移动搜索建站优化白皮书》之《网站常见问题汇总》,包括网站域名更换、网站关闭服务器、HTTPS站点改造等。 一、网站换域名 1、网站换域名的定义 网站换域名,包括从一个二...

日期:2018-01-14 浏览次数:86

HTTPS改造,302也可以接受啦!...

之前百度站长平台方面称,在HTTPS改造中,要求做了HTTPS的网站,建议保留HTTP站点 48 小时,且将HTTP站点 301 到HTTPS站中,而且是必须 301 才可以。(详情可查看:《HTTPS认证工具升级, 3...

日期:2018-01-14 浏览次数:68

公司在制作网站时客户应深度参...

虽然有些公司拥有网站设计制作能力,但是更多的企业还是通过委托专业的网站建设公司完成。从策划分析方案制作,到页面设计程序开发,专业的公司拥有相对完备的团队和丰富的经...

日期:2018-01-14 浏览次数:70

随机推荐

史上最全网站建设备案和不备案...

美国主机和香港主机的对比分析...

百度站长网站logo审核示例以及个...

企业或者个人自己建网站,需要...

您的网站alt图片标签做对了吗?...

如何利用情感化元素提升内容传...