spring-boot - 由于 jsse.alias_no_key_entry 使用带有 GoDaddy 签名证书的 JKS,SpringBoot 无法启动

标签 spring-boot ssl-certificate keytool

我正在尝试使用 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

我真的很感激任何帮助。谢谢!

最佳答案

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

  1. keystore 包含证书但不包含私钥......或者至少不是正确的 key 。请参阅How to resolve : java.io.IOException: jsse.alias_no_key_entry
  2. 您只是配置了错误的别名;如果您输入 keystore 中不存在的别名,您将收到相同的错误。

正在查找的别名需要存在于 keystore 中,并且关联的私钥需要存在于其中(而不仅仅是证书)。如果不满足这些条件,则会抛出此错误。

关于spring-boot - 由于 jsse.alias_no_key_entry 使用带有 GoDaddy 签名证书的 JKS,SpringBoot 无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515981/

相关文章:

java - 如何修复 keytool 命令错误 (Linux)?

websphere - SSL证书是否绑定(bind)到服务器IP地址?

ssl-certificate - 使用 keytool 生成 CSR 文件时,是否必须在托管服务器上生成?

java - 具有自定义注释的字段的 Gson 自定义序列化

json - 即使所有字段都为空,@JsonUnwrapped 也会创建非空对象

java - 在 Elasticsearch 中忽略 JsonIgnore

java - Lettuce RedisCache 抛出 java.util.concurrent.RejectedExecutionException 线程限制超出替换阻塞的工作线程

.htaccess - 让我们加密 SSL 导致 Chrome 出现问题

java - keytool错误: java. lang.IllegalArgumentException : publicKey's is not X. 509,但OpenJDK 1.8.162中的X509

java - 生成 keystore 时遇到问题 (Java)