HTTPS通加密证书获取数据问题

在对接E.COMPROCESSING支付网关过程出现的问题记录一下:

Eclipse+Tomcat7.0+JDK1.7

在使用以下代码连接的过程中出现以下异常:

 try{	
		String url = bankChannel.getBankPayUrl() + "/" + bankChannel.getChannelMerNo();
		String chartSet = "UTF-8";
		// 生成httpClient
		DefaultHttpClient httpClient = new DefaultHttpClient();
		SSLContext sc = SSLContext.getInstance("TLSv1.1");
		sc.init(null, null, null);
		SSLSocketFactory sslSocketFactory = new SSLSocketFactory(sc);
		Scheme protocolScheme = new Scheme("HTTPS", 443, sslSocketFactory);
		httpClient.getConnectionManager().getSchemeRegistry().register(protocolScheme);
		httpClient.setHttpRequestRetryHandler(new GBHttpRequestRetryHandler());
		// 生成httpPost
		HttpPost post = HttpClientUtil.generateHttpPost(url, sendData, chartSet);
		String userPass = username+":"+password;
		String encoded = Base64.encodeBase64String(userPass.getBytes());
		post.setHeader("Accept", "application/xml");
		post.setHeader("Content-Type", "application/xml");
		post.setHeader("Authorization", "Basic " + encoded);
		// 发送请求
		sendResult = HttpClientUtil.postRequest(httpClient, post, null, chartSet, true);
		} catch (Exception e) {
			return bankUtil.handleSendBankException(bankReturn, paramBean, ECPBank.class, e);
		}

1、javax.net.ssl.SSLException: Received fatal alert: protocol_version

2、javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name

问题解决:

1、原因:对方需要的加密版本为1.2,代码中使用了1.1,所以造成了bug;解决:把

SSLContext sc = SSLContext.getInstance("TLSv1.1"); 改成
SSLContext sc = SSLContext.getInstance("TLSv1.2");

PS:在jdk1.7(或者1.6)中默认加密版本为1.1,jdk1.8默认1.2;但是1.7也支持1.2,但需要重写版本号;

2、原因:客户端与服务端握手失败(可能是两边版本不一致?);解决:在代码中加入:System.setProperty("jsse.enableSNIExtension","false");

如果是在Eclipse中调用Tomcat内核跑的程序,则需要在run configuration中加入参数:-Djsse.enableSNIExtension=false;

如果是在Windows/Linux下直接运行Tomcat的,则需要在catalina.bat/catalina.sh中加入参数-Djsse.enableSNIExtension=false;

参考:https://stackoverflow.com/questions/7615645/ssl-handshake-alert-unrecognized-name-error-since-upgrade-to-java-1-7-0/43134789#43134789

如果出现以下报错:peer not authenticated
请参考:https://www.cnblogs.com/metoy/p/6238061.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以过 Virbox 开发者工具盒实现: dll、exe的加密保护 防止软件被反向工程、反向汇编、反向编译 软件的授权控制:限时、限次、限功能,限制设备绑定等 资源文件的加密:PDF、PPT、视频等,防止复制拷贝 优势 Virbox 加密方案配合使用深思新一代加密锁:精锐 5 加密锁。精锐 5 加密锁是目前加密锁市场上能抵抗住黑客疯狂破译的一款产品。深思上一代产品精锐 4 加密锁目前仍是加密市场上一款优秀的加密产品,精锐 5 加密锁全新升级,加密技术及硬件比精锐4更胜一筹。 优势1:碎片代码保护 代码移植在业界只被简单使用,只有开发商投入巨大的精力才能取得一定效果,所以一直停留在概念上。近几年,包括深思在内的加密锁厂商纷纷提出“自动代码移植”的概念并有推出相关的产品,但是在实践中因为同样又限于硬件性能,能抽取的代码受到极大的限制,常是只能“移”数条指令,所以安全上的提升有限。而且此方案严格受加密锁硬件规格的限制,可扩展性极低,加密后的软件只能彻底依赖加密锁,无法实现业务变化(比如在线试用等)。 深思的“碎片代码执行”从根本上解决上述问题,利用成熟的代码提取技术,从软件中抽取大量代码,经过加密混淆后在安全环境中执行,融合Vibrox加密引擎、虚拟化和驱动技术,让软件执行过程更安全。 碎片代码执行可以简单的理解为将软件功能拆散,放在安全环境执行,让破解者无从下手,是软件保护理念的一次重大突破。 优势2:快速加密 - Virbox Protector 加壳工具 Virbox protector加壳工具是深思自主研发的一套高强度自动保护加密工具,创新性的引入了预分析和自动优化引擎, 有效的解决了虚拟化保护代码时的安全性和性能平衡问题。 集自动代码移植、混淆、外壳加密、数据加密于一身,无需编程就能达到极高的保护强度。 优势3:动态防御-反黑引擎 内置R0级核心态反黑引擎,基于黑客行为特征 的(反黑数据库)反制手段。精准打击调试、注入、内存修改等黑客行为,由被动挨打到主动防护。驱动级别反调试,秒杀常见调试器(IDA Pro/WinDbg/OllyDbg/X64Dbg)。 优势4:定制 SDK 定制版的 SDK 具有独立的开发者 PIN、密钥及证书体系,每个开发者的 SDK 均不同,黑客不会有用的破解手段。 优势5:便捷的远程升级 远程升级可过 d2c 包进行升级,无需更改软件代码。 优势5:互联网化体验 可使用云许可或者软许可进行控制,无需加密锁模式。一次加密,多种许可形式完美兼容,假如您的用户不希望使用硬件,您可以在加密方案不变更的情况下,迅速切换至云锁或者软锁。 优势6:强悍的硬件性能 精锐 5 拥有精锐系列迄今运行速度最快的芯片,性能格外强劲。采用了英飞凌提供的过了 CC EAL5+ 认证的 32 位 ARM 芯片,主频高达 24Mhz,执行速度可达 50DMIPS,综合性能相比精锐 IV 提升了 3000 倍,可以执行更多复杂的任务。首次提供了高达 512K 的存储空间,最高可存储 6000 条许可信息。 精锐5采用了控制锁加用户锁模式,控制锁由开发商使用,在对软件加密及给用户锁内发许可时使用,只需要一把就可以。用户锁配套软件开发者的软件发给软件使用者。首次购买需要买精锐5的开发套件进行测试。 应用行业 目前已有超过10000家软件开发商注册使用Virbox 对软件进行加密,几乎遍布全部行业。例如:建筑软件、教育软件及资源、游戏软件、设备软件、财务软件、视觉控制、医疗软件、测绘软件、金融软件、安防软件、VR、工控软件、绘图软件等皆可使用Virbox 加密工具进行保护。 支持的开发语言及二进制文件 C C++ VB6.0 Delphi7 DeliphXE-XE10 BCB6.0 C# .Net Java ARX(AutoCAD) Unity3D UE4 所有格式的资源文件 Revit(插件) 使用方法 安装后,注册Virbox LM帐号(可点击工具盒注册帐号按钮),登录开发者工具盒后,下载SDK即可使用。
HTTPS(Hypertext Transfer Protocol Secure)是一种安全的信协议,过在HTTP与SSL/TLS协议组合使用,确保在网络传输过程中的数据安全性。HTTPS的安全性主要依赖于网络证书的验证。 获取网络证书是建立HTTPS安全连接的前提。当客户端访问一个使用HTTPS的网站时,服务器会将其证书发送给客户端。证书中包含了网站的公钥以及相关的信息,并由一家被客户端信任的第三方机构签名。客户端接收到证书后,会验证证书的真实性。 首先,客户端会检查证书的签名是否有效。证书的签名由第三方机构颁发,客户端会使用第三方机构的根证书来验证签名的合法性。如果根证书是被客户端信任的,那么证书过了验证,表示网站的身份是可信的。 其次,客户端还会检查证书中的域名是否与客户端访问的域名一致。这是为了防止中间人攻击的方式之一。如果两者一致,证书就有过验证的可能性,并且客户端会生成一个对称密钥与网站进行加密信。 最后,客户端与服务器之间建立了安全道后,网站的域名会显示为绿色或者有锁标志,表示安全连接已建立。此时,客户端与服务器之间的数据传输就可以加密技术来保证数据的保密性和完整性。 综上所述,HTTPS获取网络证书验证的过程主要包括证书的签名验证和域名匹配验证。这样确保了客户端与服务器之间建立的连接是安全可信的,用户可以放心地进行数据传输和信息交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值