问题描述
我必须启用我的 Spring Boot 应用程序 HTTPS。对于这项任务,我创建了一个 CSR 并将其发送给我雇主的安全团队。他们向我提供了一个签名证书 ncf.cer。我按照网站 (https://www.thomasvitale.com/https-spring-boot-ssl-certificate/) 中的步骤执行了以下步骤。
-
将
ncf.cer
导入Java/JDK1.8/JRE/lib/security/cacerts(假设是JKS keystore) 别名为‘ncf’ -
在代码中,将
ncf.p12
放入src/main/resources
-
在
中进行了以下更改applications.properties
server.ssl.key-store-type=PKCS12
server.ssl.key-store=src/main/resources/keystore/ncf.p12
server.ssl.key-store-password=changeit
server.ssl.key-alias=ncf
我在启动 Springboot 应用程序时遇到错误:
Caused by: java.io.IOException: jsse.alias_no_key_entry
任何人都可以帮助我获取启用应用程序 HTTPS 的正确步骤吗?
解决方法
我终于解决了这个问题。以下是步骤
- 使用别名将 .cer 导入 cacerts。
- 在不提供别名的情况下将 .p12 导入 cacerts。这里系统会生成别名(长 字母数字)。在 applicatins.properties 中提及此别名。
- 复制 .p12 到 src/main/resoruces/keystore 里面,然后在里面引用这个路径 应用程序.属性。
此错误意味着您的密钥库不包含原始私钥。
签名证书 ncf.cer
应该导入到生成证书请求的原始密钥库中。是cacerts
吗?通常这个文件只包含可信证书的公钥,而不是公钥/私钥对。
将签名证书 ncf.cer
导入正确的密钥库后,您可以导出为 PKCS12 格式,然后在您的文件夹中用作 ncf.p12
。如果您能分享如何导入 ncf.cer
文件和创建 ncf.p12
,我可以提供进一步帮助。