如何创建SSL证书并在Spring Boot中配置?加载certificate.p12报错如何解决
问题排查解决步骤
- 第一步:修正openssl证书生成命令,重新生成证书
你当前的第二条openssl命令存在换行拆分错误,-name参数是pkcs12导出命令的一部分,不能单独拆行,执行以下完整命令重新生成证书,导出密码统一设置为12345:
openssl req -newkey rsa:2048 -x509 -keyout key.pem -out cert.pem -days 365 -nodes openssl pkcs12 -export -in cert.pem -inkey key.pem -out certificate.p12 -name "certificate"
执行第二条命令时,提示输入导出密码,直接输入12345确认即可,新增的-nodes参数可避免生成的key.pem带额外加密密码,减少后续导出异常。
- 第二步:修正application.properties配置项
你当前缺少密钥别名配置,且容易混淆密钥库密码和密钥密码两个配置项,修改为以下配置:
server.port=8088 server.ssl.key-store-type=PKCS12 server.ssl.key-store=classpath:certificate.p12 server.ssl.key-store-password=12345 server.ssl.key-password=12345 server.ssl.key-alias=certificate
- 第三步:检查证书文件是否被正确打包到类路径
将新生成的certificate.p12放到resources目录后,先执行mvn clean compile命令,检查项目的target/classes目录下是否存在certificate.p12文件。如果不存在,检查pom.xml的资源过滤配置,避免p12二进制文件被过滤损坏,可添加如下配置排除p12文件的过滤:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/*.p12</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <includes> <include>**/*.p12</include> </includes> </resource> </resources> </build>
- 第四步:验证证书本身有效性
打开命令行进入certificate.p12所在目录,执行JDK自带的keytool命令验证证书是否正常:
keytool -list -keystore certificate.p12 -storetype PKCS12
输入密码12345后如果能正常显示证书别名、创建时间等信息,说明证书本身没有问题。
完成以上步骤后重新启动项目即可正常加载密钥库。
内容的提问来源于stack exchange,提问作者Seeschon
相关产品推荐
相关产品推荐

