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

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

问题背景

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

2:异常信息

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

发现问题

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

  • 如图所示

没有编译前

没有编译前

编译后

编译后

解决方法

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

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>apache

建议使用第一种

相关文章
相关标签/搜索