我正在尝试使用 SSL 保护我的 SpringBoot 服务器。我已经生成了 keystore 和 CSR。我从 GoDaddy 收到了中级证书和域名证书。我将它们导入到用于生成 CSR 的 keystore 中。
我使用以下命令生成 keystore 和 CSR。
keytool -genkey -alias server-alias -keyalg RSA -keysize 2048 -keystore keystore.jks -dname "CN=name,OU=Unit, O=Org, L=NoWhere, ST=NoWhere, C=CA"
keytool -certreq -alias server-alias -file domain.csr -keystore keystore.jks
在我的 SpringBoot 应用程序中,我的 applications.properties 文件中有以下配置。
server.ssl.key-store-type=JKS
server.ssl.key-store=location/keystore.jks
server.ssl.key-store-password=password
server.ssl.key-alias=server-alias
security.require-ssl=true
我在启动时收到以下异常原因:
Caused by: java.io.IOException: jsse.alias_no_key_entry
at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:317)
at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:239)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97)
... 20 common frames omitted
我真的很感激任何帮助。谢谢!
最佳答案
发生这种情况似乎(至少)有几个原因:
- keystore 包含证书但不包含私钥......或者至少不是正确的 key 。请参阅How to resolve : java.io.IOException: jsse.alias_no_key_entry
- 您只是配置了错误的别名;如果您输入 keystore 中不存在的别名,您将收到相同的错误。
正在查找的别名需要存在于 keystore 中,并且关联的私钥需要存在于其中(而不仅仅是证书)。如果不满足这些条件,则会抛出此错误。
关于spring-boot - 由于 jsse.alias_no_key_entry 使用带有 GoDaddy 签名证书的 JKS,SpringBoot 无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515981/