您的位置:首页 > 编程语言 > Java开发

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

2017-05-22 09:44 645 查看

更多详情请戳-原文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>


建议使用第一种

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  maven cer pfx java