1. 程式人生 > >DerInputStream.getLength(): lengthTag=111, too big.

DerInputStream.getLength(): lengthTag=111, too big.

先摘抄網上的一部分,一定要看完哦!

開發微信支付介面需要用到公鑰和私鑰,金鑰檔案統一放到專案src/main/resources的某個目錄下,然後打包部署到測試環境的jboss,發起支付或退款,失敗了。

報錯:DerInputStream.getLength(): lengthTag=111, too big.

如果把證書單獨放到某個檔案目錄下是木有問題的,猜測是否是路徑太長導致的呢?

在本地測試排除了這個可能性,然後再網上找資料發現該異常時由於證書載入不正確導致,那就說明證書被修改過。

為了證實這種情況,我把maven打好的war中的證書檔案替換掉,果然是這個原因。那證書為什麼會被修改呢,原來就是maven-resources-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>
            <nonFilteredFileExtension>p12</nonFilteredFileExtension>

        </nonFilteredFileExtensions>

    </configuration>

</plugin>

其實到這裡還沒完

<resource>
    <directory>src/main/resources</directory>
    <includes>
        <include>**/*.p12</include>
    </includes>
    <filtering>false</filtering>
</resource>

<filtering>false</filtering>這個要配置成false才可以,我就被坑了,明明寫了nonFilteredFileExtensions還是不起作用,記錄下,希望能幫助大家!!!