DER input, Integer tag error的异常处理
1、首先我向大家介绍一下我做的东西,发生这个异常的情况。
我做的是一个电签的系统,在调用某公司的API生成证书,然后与安证通进行同步证书的任务。
2、问题具体的异常
具体异常如下:
2016/08/29 15:19:25 : INFO [com.bjazt.easysign.server.SyncServiceImpl] 进入同步接口:<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ROWDATA>
<ROW xsi:type="aztCert" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CERTID>SYNC110101198912129995</CERTID>
<USERID>110101198912129995</USERID>
<OPTYPE>A</OPTYPE>
<PASSWORD>itrusyes</PASSWORD>
<PFX>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</PFX>
</ROW>
</ROWDATA> 2016/08/29 15:19:25 : INFO [com.bjazt.easysign.server.SyncServiceImpl] 将XML转为Bean,开始
java.io.IOException: DER input, Integer tag error
at sun.security.util.DerInputStream.getInteger(DerInputStream.java:151)
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1202)
at java.security.KeyStore.load(KeyStore.java:1185)
at com.esa2000.datasync.common.SystemUtil.validateCertificate(SystemUtil.java:483)
at com.esa2000.datasync.document.XmlToPfxCert.toObject(XmlToPfxCert.java:45)
at com.esa2000.datasync.document.XmlToBean.toObjectList(XmlToBean.java:31)
at com.esa2000.datasync.document.XmlToBean.toObject(XmlToBean.java:47)
at com.bjazt.easysign.server.SyncServiceImpl.sync(SyncServiceImpl.java:26)
at com.bjazt.easysign.server.SyncServiceImpl.syncPfxCert(SyncServiceImpl.java:50)
at sun.reflect.GeneratedMethodAccessor188.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
2016/08/29 15:19:25 : ERROR [com.esa2000.datasync.document.XmlToPfxCert]
java.io.IOException: DER input, Integer tag error
at sun.security.util.DerInputStream.getInteger(DerInputStream.java:151)
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1202)
at java.security.KeyStore.load(KeyStore.java:1185)
at com.esa2000.datasync.common.SystemUtil.validateCertificate(SystemUtil.java:483)
at com.esa2000.datasync.document.XmlToPfxCert.toObject(XmlToPfxCert.java:45)
at com.esa2000.datasync.document.XmlToBean.toObjectList(XmlToBean.java:31)
at com.esa2000.datasync.document.XmlToBean.toObject(XmlToBean.java:47)
at com.bjazt.easysign.server.SyncServiceImpl.sync(SyncServiceImpl.java:26)
at com.bjazt.easysign.server.SyncServiceImpl.syncPfxCert(SyncServiceImpl.java:50)
at sun.reflect.GeneratedMethodAccessor188.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
3、解决问题
错误的原因是证书的申请是pkcs7格式的生成,但是安证通同步解析用到的是pkcs12,造成编码解码不一致的问题。
起初就是jar包的冲突问题,bcprov-jdk15-1.46.jar没有向下兼容bcprov-jdk15-1.43.jar,因为这其中的DERSequence方法的构造方法不同。大家可以自行的下载看看。
最后我们是在申请证书之后,用证书去获取这个pfx格式的编码,然后去用安证通同步,这样就解决了这个问题。(因为这是第三方的东西,所以要和第三方进行沟通,他们提供了一个新的方法来获取证书的pfx格式编码)。
4、总结
遇见jar包冲突的问题,解决的根本方法就是去掉冲突的jar,留下一个我们用到的jar包,否则,就算解决了,项目上线也会有很多的问题的。
5、美诗美句
少年不识愁滋味,爱上层楼,爱上层楼,为赋新词强说愁。
而今识尽愁滋味,欲说还秀,欲说还休,却道天凉好个秋。
DER input, Integer tag error的异常处理的更多相关文章
- 支付宝APP支付开发- IOException : DER input, Integer tag error
支付宝APP支付Java开发报错: 1 java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: I ...
- input textbox tag
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAAB0CAIAAACaKavmAAAJ0klEQVR4nO3dO2wb5wHA8YOHIkOLrk
- <input type="file"> change事件异常处理办法
问题:最近发现一个奇怪的bug, 那就是在上传图片需要采用input type=file来进行文件选择.由于为了适应美工的UI图,所以是把选择文件的input框隐藏了.然后通过另外一个按钮的点击事件来 ...
- 前后端java+vue 实现rsa 加解密与摘要签名算法
RSA 加密.解密.签名.验签.摘要,前后端java+vue联调测试通过 直接上代码 // 注意:加密密文与签名都是唯一的,不会变化.// 注意:vue 端密钥都要带pem格式.java 不要带pem ...
- springMVC整理04--文件上传 & 拦截器 & 异常处理
1. 文件上传 SpringMVC 的文件上传非常简便,首先导入文件上传依赖的 jar: <!-- 文件上传所依赖的 jar 包 --> <dependency> <g ...
- Python异常和异常处理
Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...
- Java中的异常处理try catch(第八周课堂示例总结)
异常处理 使用Java异常处理机制: 把可能会发生错误的代码放进try语句块中. 当程序检测到出现了一个错误时会抛出一个异常对象. 异常处理代码会捕获并处理这个错误. catch语句块中的代码用于处理 ...
- python异常处理(基础)
之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...
- 结对编程之Fault、Error、Failure
1.结对说明 结对对象:刘世麟 博客地址:http://www.cnblogs.com/liushilin/ 双方贡献:1:1 2.题目要求 构造程序,分别是: •不能触发Faul ...
随机推荐
- HTML5编码规范
为每个 HTML 页面的第一行添加标准模式(standard mode)的声明,这样能够确保在每个浏览器中拥有一致的展现. 用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展 ...
- 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
[背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...
- c++2008 并行配置文件和获取字典的所有key的方法
1 需要 在官网 下载对应的执行包... 2, # !/usr/bin/python3.4 # -*- coding: utf-8 -*- b = { 'video':0, 'music':23 } ...
- Codeforces Round #370 - #379 (Div. 2)
题意: 思路: Codeforces Round #370(Solved: 4 out of 5) A - Memory and Crow 题意:有一个序列,然后对每一个进行ai = bi - bi ...
- DataSet、DataTable、Json、List 等各种数据的相互转化
1.根据Dataset生成json格式的字符串,不管Dataset里面有多少个表都可以一一生成对应的json字符串,并一次性返回 private string dsToJson(DataSet d ...
- 一个列子演示vs2010 c++新特性
近日托安装雪豹的"福",格了XP装了win7,前段时间看了C++0X标准以及VS2010诱人的新特性,不禁心痒痒在线安装了VS2010,然后手写了这个列子用来测试新增的特性. st ...
- android PreferenceFragment
初始化: public SettingPreferenceFragment() { } public void setArguments(Bundle bundle){ String targetId ...
- java的poi技术读,写Excel[2003-2007,2010]
在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术 ...
- 目录的文件权限-X
所有目录务必保持具有X权限(可执行权限)!!,否则无法进入该目录及子目录,且无法读取该目录及子目录下的文件或子目录
- Ubuntu播放yuv文件
mplayer -demuxer rawvideo -rawvideo w=176:h=144 test.yuv mplayer -fps 30 test.264 ffmpeg采集摄像头视频数据 ff ...