本发明涉及一种检测终端是否能访问互联网的方法。
背景技术:
客户端访问服务器连接中断时,客户端一般需要做网络重连以实现业务连续。但在有些网络安全场景下需要确认当前因特网是否可达,然后在进行网络连接等后续操作。恶意攻击者会利用局域网模拟互联网使用虚假dns解析服务构造虚假服务器,诱使客户端发起重连,进而对交互报文进行分析寻找漏洞。
现有的技术一般通过客户端给服务器发送保活报文的方法确认服务器是否可达,或者通过购买服务器证书,在客户端进行服务器校验的方式,这种方式比较容易被劫持和虚假服务器应答仿冒,不能真实反映当前网络连通情况。
技术实现要素:
本发明的目的在于针对现有技术的不足,提供一种检测终端是否能访问互联网的方法。
为了解决上述技术问题,采用如下技术方案:
一种检测终端是否能访问互联网的方法,包括以下步骤:
a)预置一批公共网站url池以及对应的ca证书公钥列表和ca证书,并将其预置到客户端程序中;
b)当出现客户端访问服务器网络发生中断并且重连失败,或应用初次进行服务器连接时,首先通过随机从预置的公共网站url池中选取2个同时进行https连接并用预置的ca证书进行服务器真实性校验。
进一步,如果ca证书进行服务器真实性校验通过,则说明因特网连通性没问题,然后才开始跳转到下一个服务器ip进行业务连接。
进一步,如果ca证书进行服务器真实性校验没通过,则说明因特网连通性异常,终止网络连接。
进一步,ca证书进行服务器真实性校验的方式使用openssl库来实现安全连接过程,确保https握手成功并且证书校验通过,否则是假冒的服务器。
相关术语解释如下:
ssl:ssl(securesocketslayer安全套接层),及其继任者传输层安全(transportlayersecurity,tls)是为网络通信提供安全及数据完整性的一种安全协议。tls与ssl在传输层对网络连接进行加密。
ca证书:ca证书(内含公钥和私钥,
本技术:
所述的ca指的是证书公钥),网上的公众用户通过验证ca的签字从而信任ca,任何人都可以得到ca的证书(含公钥),用以验证它所签发的证书。如果一个用户想鉴别另一个证书的真伪,他就用ca的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(ca)签发的对用户的公钥的认证。
由于采用上述技术方案,具有以下有益效果:
本发明为一种检测终端是否能访问互联网的方法,不额外增加投入的情况下确保客户端所处环境可以访问因特网。由于知名网站的服务器证书都是私有的,无法仿冒,可以感知真实的网络环境。方案利用公共资源,可靠性高且不需要额外投入成本。
附图说明
下面结合附图对本发明作进一步说明:
图1为本发明中一种检测终端是否能访问互联网的方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种检测终端是否能访问互联网的方法,包括以下步骤:
a)预置一批公共网站url池以及对应的ca证书公钥列表和ca证书,并将其预置到客户端程序中;
b)当出现客户端访问服务器网络发生中断并且重连失败,或应用初次进行服务器连接时,首先通过随机从预置的公共网站url池中选取2个同时进行https连接并用预置的ca证书进行服务器真实性校验。
如果ca证书进行服务器真实性校验通过,则说明因特网连通性没问题,然后才开始跳转到下一个服务器ip进行业务连接。
如果ca证书进行服务器真实性校验没通过,则说明因特网连通性异常,终止网络连接。
ca证书进行服务器真实性校验的方式使用openssl库来实现安全连接过程,确保https握手成功并且证书校验通过,否则是假冒的服务器。
ca证书进行服务器真实性校验的具体过程如下:使用openssl库来实现安全连接过程,调用ssl_ctx_load_verify_locations函数加载url对应的ca证书,依据ctx创建一个bio对象和ssl对象,然后调用bio_set_conn_hostname来设置要访问的url,为了确认连接是否成功,先调用bio_do_connect函数判断返回值是否大于0,然后调用ssl_get_verify_result来检查是否是可信服务器,如果返回值是x509_v_ok则说明服务器为真实服务器,否则是假冒的服务器。
以上仅为本发明的具体实施例,但本发明的技术特征并不局限于此。任何以本发明为基础,为解决基本相同的技术问题,实现基本相同的技术效果,所作出地简单变化、等同替换或者修饰等,皆涵盖于本发明的保护范围之中。