博客信息

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

0
发布时间:『 2017-05-22 09:55』  博客类别:开源项目  阅读(1635) 评论()

1:问题背景

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

      2:异常信息 java.io.IOException: DER length more than 4 bytes: 111

2:发现问题

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

如图所示:

    1)没有编译前

     27C49F49-846E-47D9-BA8D-A573EDEC4FE1.png

    2)编译后

     853945AF-3588-4D36-89F6-C5EE5DC41194.png

3:解决方法

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

     2:阻止maven编译

       1)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>

        2)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>

       建议使用第一种



关键字:   cer     pfx     maven编译导致证书变大     “DER     length     more     than     4     bytes:     111”  
Copyright © 2012-2017 yinbin.lan 版权所有   京ICP备16047123号