一、证书路径问题
window下可以直接填写物理路径
linux:可以将文件放置在classpath下。使用一下获取
String keyClasspath = Thread.currentThread().getContextClassLoader().getResource("/").getPath() + "cert/apiclient_cert.p12";
二、打包证书DerInputStream.getLength(): lengthTag=111, too big.
微信支付接口需要用到公钥和私钥,密钥文件统一放到项目src/main/resources的某个目录下,然后打包部署到测试环境。
报错:DerInputStream.getLength(): lengthTag=111, too big.
原因:程序编译打包时候maven-resources-plugin,证书文件变化,密钥文件服务器上的文件md5值,与本地MD5值不一致
解决方案:【打包时候排除证书文件编译】
<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>