文档章节

Maven编译后证书字节变大,too big pfx,导致解密失败,cer,pfx

我是it爱好者
 我是it爱好者
发布于 2017/05/22 19:07
字数 418
阅读 36
收藏 0

更多详情请戳-原文lanyinbin.cn

问题背景

1:最近在做电子发票的对接,里面有一个加密和解密的方法涉及到相关证书,后缀是cer和pfx的,在普通的java工程中测试通过,放到maven项目中始终报解密失败,最终查找后发现是maven编译的问题

2:异常信息

java.io.IOException: DER length more than 4 bytes: 111

发现问题

查了一圈,没有得到好的解答,开始从原理入手,关于证书起始就是一个文件,不应该参与编译的,为什么会被编译,开始想到maven的编译,去查看java项目编译后和maven编译后的目录文件发现,maven编译后使得cer证书变大,导致解密失败

  • 如图所示

没有编译前

没有编译前

编译后

编译后

解决方法

1:从原理入手,cer和pfx作为证书只是一个文件而已,不应该被编译,是在运行的时候再读取,所以应该把文件不放在这个项目里,比如一个配置平台,如果证书替换也方便,个人认为是最好的方案 2:阻止maven编译

build中阻止,相关配置如下:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>/CA/tungkongca.cer</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <excludes>
                <exclude>/CA/tungkongca.cer</exclude>
            </excludes>
        </resource>
    </resources>
</build>

maven-plugin中阻止,相关配置如下:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <configuration> 
       <encoding>UTF-8</encoding> 
    <!-- 过滤后缀为pem、pfx的证书文件 --> 
        <nonFilteredFileExtensions>                                 <nonFilteredFileExtension>pem</nonFilteredFileExtension> 
        <nonFilteredFileExtension>pfx</nonFilteredFileExtension> 
       </nonFilteredFileExtensions> 
</configuration> 

</plugin>

建议使用第一种

© 著作权归作者所有

我是it爱好者
粉丝 2
博文 8
码字总数 11918
作品 0
海淀
高级程序员
私信 提问
关于pfx和cer数字证书

1、数字证书文件cer和pfx的区别 作为文件形式存在的证书一般有这几种格式: 1.带有私钥的证书 由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证...

黎嘉诚
2016/08/12
64
0
pfx证书与cer证书的区别

207.11.13 update:证书格式在线转换 1.PFX是带有私钥的证书(包含公钥和私钥) 由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以p...

swingcoder
2016/05/11
1K
0
Azure web site和web job的config文件加密方式

1.分析 由于Azure Web AppService平台的特殊性,所以在C#中原先的config加密方法DataProtectionConfigurationProvider和RSAProtectedConfigurationProvider在Azure平台上面是无法使用的,会在...

学习虾
2018/11/03
0
0
OpenSSL 转换证书格式

OpenSSL 转换证书格式 原创 2016-08-30 景峯 Netkiller 工作中我相信你一定会遇到处理数字证书的时候。各种平台,各种语言,它们采用的证书格式与标准都不相同,多多少少存在一些差异。实际上...

neo-chen
2016/09/08
67
0
851001: PFXFile encoding decoding failure(Maven编译后证书 变小)

851001: PFXFile encoding decoding failure(Maven编译后证书 变小) 851001: PFXFile encoding decoding failure851001: encoding required base64 encodingjava.lang.IllegalArgumentExcept......

curiousby
2018/05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分享一波 RabbitMQ 面试题有答案

1、什么是rabbitmq 2、为什么要使用rabbitmq 3、使用rabbitmq的场景 4、如何确保消息正确地发送至RabbitMQ? 如何确保消息接收方消费了消息? 发送方确认模式 接收方确认机制 接收方消息确认...

搜云库技术团队
45分钟前
2
0
2019年JAVA面试题(高级资深)

记录下本年度最新的面试题: 2019-04-24 //某互联网公司,劳工资源管理方向职位 1.bio/nio/aio介绍下,粘包、拆包问题怎么解决? 2.数据库四个特性是什么,事务传播性是怎么样的?spring事务和...

em_aaron
48分钟前
1
0
yarn如何全局安装命令以及和环境变量的关系

npm全局安装 npm i -g xxx yarn 全局安装 yarn global add xxx 然而你可能会发现npm全局安装后的命令可以直接使用,而yarn却不行,这是为什么呢? 我们来查看下npm和yarn的bin目录 使用npm全...

单线程生物
57分钟前
2
0
异步线程RequestContextHolder.getRequestAttributes()为null

使用Spring框架,在Service中开启一个新的线程,在新的线程中使用 RequestAttributes ra = RequestContextHolder.getRequestAttributes(); 获取出来为null,有没有什么办法能解决? 问题出现...

xiaomin0322
今天
1
0
mingw64环境搭建

mingw64环境搭建 转自:http://www.cr173.com/soft/132367.html MinGW64位版,默认编译出来是64位的,需要编译32位请使用-m32 参数!mingw是一款gnu工具集合是Minimalist GNU on Windows的简称...

shzwork
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部