java.security.cert.CertificateException:无法解析证书:java.io.IOException:无效的BER / DER数据(太大了?)

时间:2015-07-26 17:42:02

标签: java spring jetty x509certificate

我正在运行Jetty以在spring config中加载公共证书。

如果我对文件的位置进行硬编码,它会很好地加载证书,所以我知道证书本身没有问题。但是,当我在config中设置它时,它会将其复制到目标文件夹并在此时获得此错误。

java.security.cert.CertificateException:无法解析证书:java.io.IOException:无效的BER / DER数据(太大了?)     at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:104)     在java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339)

我确实看到证书的大小在加载失败后发生了变化。我不确定这是否是一个问题,因为同一文件夹中其他证书的其他大小也增加了,并且没有加载它们的问题。

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

我也得到了这个例外。 我用maven资源过滤器配置修复它。 ' .cer'由于以下配置,文件由maven资源过滤器插件过滤(修改):

<resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
<resources>

所以,我添加了以下配置:

<resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>**/*.cer</include>
                <include>**/*.jks</include>
            </includes>
        </resource>
    </resources>

异常消失了。祝你好运!

答案 1 :(得分:0)

我通过将以下内容添加到我的pom.xml中解决了这个问题:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <nonFilteredFileExtensions>
                    <!-- the CER files are included with the correct encoding when
                         copied into the JAR file when this configuration is present,
                         see https://stackoverflow.com/questions/49294378/incorrect-encoding-serving-binary-pdf-file-through-classpathresource-in-spring.
                     -->
                    <nonFilteredFileExtension>cer</nonFilteredFileExtension>
                </nonFilteredFileExtensions>
            </configuration>
        </plugin>
    </plugins>
</build>

我尝试了@manbu提出的资源过滤,但是没有用。