由于jsse.alias_no_key_entry使用带有GoDaddy签名证书的JKS导致SpringBoot无法启动

时间:2019-08-15 20:39:42

标签: spring-boot ssl-certificate keytool

我正在尝试使用SSL保护我的SpringBoot服务器。我已经生成了密钥库和CSR。我收到了GoDaddy颁发的中级和域证书。我将那些导入到用于生成CSR的密钥库中。

我使用以下命令来生成密钥库和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

非常感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:3)

似乎有(至少)几个原因可以导致这种情况发生:

  1. 密钥库包含证书,但不包含私钥……或至少不包含右键。参见How to resolve : java.io.IOException: jsse.alias_no_key_entry
  2. 您只是配置了错误的别名;如果您输入的密钥库中不存在别名,则会出现同样的错误。

要查找的别名需要存在于密钥库中,并且相关的私钥需要存在于其中(不仅仅是证书)。如果不满足这些条件,它将引发此错误。