自强不息    厚德载物

异常:Invalid keystore format,spring boot配置ssl证书格式不合法解决

  2023/6/17 18:00:00   【次浏览】 本站

文章目录

一、异常:Invalid keystore format

二、出现问题的原因

1、原因

2、鉴别

三、解决

方法一:不要动

方法二:转换文件格式

方法三:禁用Maven动静态资源

方法四:配置MAVEN过滤JKS等格式的文件

四、最后

一、异常:Invalid keystore format

spring boot下配置ssl,使用jks证书,开始的时候启动没有问题,打的第一个包也没有问题,但是后来不断出现证书格式不合法的异常。有的时候就算改了证书名称,还是出如此错误。异常如下:


Caused by: java.lang.IllegalArgumentException: Invalid keystore format

at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1142) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1228) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:586) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

... 14 common frames omitted

Caused by: java.io.IOException: Invalid keystore format

at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650) ~[na:1.8.0_20]

at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55) ~[na:1.8.0_20]

at java.security.KeyStore.load(KeyStore.java:1433) ~[na:1.8.0_20]

at org.apache.tomcat.util.security.KeyStoreUtil.load(KeyStoreUtil.java:69) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:217) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:206) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:283) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) ~[tomcat-embed-core-9.0.29.jar:9.0.29]

... 20 common frames omitted

image.png


二、出现问题的原因

1、原因

会出现Invalid keystore format 不合法的证书秘钥库的主要原因是证书的内容发生了变化,我们使用IDEA或者eclipse的时候自动打开证书,保存的时候发生了变化,或者是使用Git从Windos提交文件的时候,读文件以后发生了变化。不过这两个可能原因可能性不是很高,最后的一个重要原因就是使用maven编译或者打包的时候,对文件的内容进行了修改(maven编译的时候使用了占位符,替换的时候使文件发生了变化);


2、鉴别

如何鉴别SSL证书内容是否发生了变化,主要是通过对面源文件的大小与编译后的ssl证书文件的大小。例如我的正常的SSL证书大小为5.4kb,编译后的证书大小为8.6kb。启动程序发现出现异常Invalid keystore format。


三、解决

方法一:不要动

将SSL证书文件放到项目中以后,不要用编程工具等的尝试打开它,证书文件在IDEA中会有一个?符号显示。或者将文件删除,重新拷贝一份新的文件过来;(PS:个人经过实操,没用)


方法二:转换文件格式

将证书文件格式转换为其它的文件格式,可以通过keytool、openssl、或者是其它带有转换SSL证书的工具,将JKS后缀的证书转换为PFX格式的(PS:个人觉得太麻烦,而且也没必要)


方法三:禁用Maven动静态资源

在项目的POM文件中添加如下配置:


<build>

        <resources>

            <resource>

                <directory>src/main/resources</directory>

                <filtering>false</filtering>

            </resource>

        </resources>

    </build>


</project>

方法四:配置MAVEN过滤JKS等格式的文件

在项目的POM文件中添加如下插件配置:


 <plugins>

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-resources-plugin</artifactId>

                <version>3.2.0</version>

                <configuration>

                    <nonFilteredFileExtensions>

                        <!--<nonFilteredFileExtension>p12</nonFilteredFileExtension>-->

                        <nonFilteredFileExtension>jks</nonFilteredFileExtension>

                    </nonFilteredFileExtensions>

                </configuration>

            </plugin>

        </plugins>


ps: jks使用小写,如果大写的话,package的时候会出现异常。


四、最后

上述问题是使用JKS后缀格式的证书发现了有此问题,使用pfx后缀的证书未发现有上述问题



手机扫码查看当前文章:

异常:Invalid keystore format,spring boot配置ssl证书格式不合法解决

如本网转载稿涉及版权等问题,请作者见稿后在两周内速来电与我们联系, 详见版权声明

  上一篇:安卓签名文件打包错误java.io.IOException:Invalid keystore format ...

 下一篇:ChatGLM:小白也可搭建属于自己的chatgpt(全程教学)