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

建議使用第一種

相關文章
相關標籤/搜索