我正在运行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)
我确实看到证书的大小在加载失败后发生了变化。我不确定这是否是一个问题,因为同一文件夹中其他证书的其他大小也增加了,并且没有加载它们的问题。
感谢任何帮助
答案 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提出的资源过滤,但是没有用。