小記配置 maven-assembly-plugin 誤修改文件內(nèi)容導(dǎo)致證書異常

開發(fā)銀聯(lián)支付功能,本地功能全部跑通,部署到測(cè)試環(huán)境報(bào)證書簽名錯(cuò)誤。 進(jìn)一步可以看到 FileInputStream 讀文件時(shí)拋出異常:

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

一番追溯,最終 diff file 才發(fā)現(xiàn)證書文件 51offer_unionpay.pfx 服務(wù)器上與本地并不一致,竟然是 maven 打包時(shí)出的問題。

項(xiàng)目 maven 打包時(shí)用的是 maven-assembly-plugin (留意 maven-resources-plugin 也存在類似的問題) 證書文件的打包配置如下:

<fileSet>
    <directory>src/main/resources/assets</directory>
    <outputDirectory>conf/META-INF/assets</outputDirectory>
    <includes>
        <include>**/*.*</include>
    </includes>
    <filtered>true</filtered>
</fileSet>

留意 <filtered>true</filtered> 這行配置。 這是 maven-assembly-plugin 從 pom 配置 properties 變量所用的配置,在證書文件這個(gè)場景并不需要。 maven-assembly-plugin 自作多情的過濾讀寫了證書文件,卻沒能正確處理文件自身的內(nèi)容,導(dǎo)致了這個(gè)問題。

解決也很簡單:改為<filtered>false</filtered> 提交重新發(fā)布,問題解決。

總結(jié)

  • 調(diào)試時(shí)留意報(bào)錯(cuò)細(xì)節(jié),問題偶爾也會(huì)發(fā)生在你完全想不到的地方。
  • 配置也要力求精簡,不要引入無關(guān)內(nèi)容,拖泥帶水只會(huì)給自己挖坑。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容