0
点赞
收藏
分享

微信扫一扫

maven 编译jks等证书文件后,证书内容被破坏

芷兮离离 2022-01-23 阅读 83
mavenjavajar
  • 问题

最近有项目要在jar包内使用jks证书文件,编译运行后,如下错误

java.io.IOException: Invalid keystore format
	at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
	at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
	at java.security.KeyStore.load(KeyStore.java:1214)

查看编译前后的证书文件大小,发现编译后的文件较大,所以猜测maven编译后对文件做了修改,导致了证书不可用。

  • 解决

解决方案有两种

  1. 使用 maven-resources-plugin 进行过滤
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <!-- 过滤后缀为jks的证书文件 -->
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>jks</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>
  1. 使用 resources 进行过滤
<resources>
            <resource>
            //将资源文件中的除了后缀为 jks 的其他文件打包到classpath下,对文件做处理
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>*.jks</exclude>
                </excludes>
            </resource>

            <resource>
            //将资源文件中后缀为 jks 的文件打包到classpath,但不对文件做处理
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <includes>
                    <include>*.jks</include>
                </includes>
            </resource>
        </resources>
举报

相关推荐

0 条评论