SpringBoot项目添加ssl证书后不生效问题
缘
在我的网站中添加证书后报错,不是打包失败,就是证书添加后启动失败,亦或者是前端页面请求后端地址失败。
解决方案
. 打包报错
报错:
bash
(default-resources) on project pig-boot: filtering G:\INFINITE-SISM\cursor\mysite\platform-irule - cursor\pig-boot\src\main\resources\liufei.xyz.pfx to G:\INFINITE-SISM\cursor\mysite\platform-irule - cursor\pig-boot\target\classes\liufei.xyz.pfx failed with MalformedInputException: Input length = 1 -> [Help 1]
原因:
springboot编译resource中二进制文件导致的报错。
解决方案:
在pom.xml中添加以下内容:
bash
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<!-- SSL 密钥库是二进制文件,必须禁止 Maven 资源过滤 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pfx</nonFilteredFileExtension>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>jks</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
.证书报错
报错
bash
Unable to create key store: Could not load store from 'classpath:game.*.xyz.pfx'
DerInputStream.getLength(): lengthTag=111, too big.
原因:
resource中的证书文件与target中的证书文件不一致,文件被当成文本编译。
解决方案:
在pom.xml中添加以下内容:
bash
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>ssl/**</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>ssl/**</include>
</includes>
</resource>
</resources>
.前端访问接口报错
报错
bash
Unable to create key store: Could not load store from 'classpath:game.*.xyz.pfx'
DerInputStream.getLength(): lengthTag=111, too big.
原因:
HTTPS 会校验证书域名。你的证书只包含:
.xyz
www..xyz
不包含 127.0.0.1
解决方案:
在vite.config.js的转发中配置允许非 HTTPS 连接:
bash
proxy: {
'/api': {
target: env.VITE_ADMIN_PROXY_PATH,
ws: true,
changeOrigin: true,
secure: false