<localhost>的证书与任何主题备用名称都不匹配

时间:2018-06-19 12:08:14

标签: spring-boot ssl-certificate

错误:

javax.net.ssl.SSLException: Certificate for <localhost> doesn't match any of the subject alternative names: [xxxxxxx.xxx.xxxxxx.xxx]

我有一个在我的本地主机上运行的spring boot应用程序。我也有通过腻子到服务器的隧道ssh。

要测试REST功能,我使用Postman调用我的服务(确定),然后该应用程序调用SOAP服务(NOK)。

我所做的事情:

  • 我手动创建/导入了所有方式的密钥/证书。
  • 我使用了keytool中的-ext将dns addr和localhost添加到SAN。
  • 我还使用了openSource Java文件来安装证书。
  • 我将主机文件更改为:127.0.0.1 xxx.xxx.xxxxxxx.xxx(如果我ping dns名称,它将响应本地主机地址)
  • 我使用VM参数-Djavax.net.debug = ssl来检查证书是否正确加载。

我缺少什么?

顺便说一句,我也在使用VPN。

1 个答案:

答案 0 :(得分:2)

在创建证书时,需要提供localhost作为使用者的替代名称。您可以通过提供以下附加参数来做到这一点:-ext "SAN:c=DNS:localhost,IP:127.0.0.1"

所以是这样的: keytool -genkeypair -keyalg RSA -keysize 2048 -alias stackoverflow -dname "CN=stackoverflow,OU=Hakan,O=Hakan,C=NL" -ext "SAN:c=DNS:localhost,IP:127.0.0.1" -validity 3650 -keystore identity.jks -storepass secret -keypass secret -deststoretype pkcs12