温馨提示:本文翻译自stackoverflow.com,查看原文请点击:spring boot - Gettig CertificateException: "No name matching localhost found" in Playframework java application
certificate java playframework spring-boot ssl

spring boot - Gettig CertificateException:Playframework Java应用程序中的“找不到与本地主机匹配的名称”

发布于 2020-04-18 09:57:09

我有2个应用程序,一个应用程序在中Spring Boot,其他应用程序在Playframework我正在尝试应用程序中使用应用程序的REST终结点我正在使用获得的证书访问端点。在我的播放应用程序中,我禁用了主机名验证,但是仍然出现此错误。您可以在下面找到代码和配置:Spring BootPlayframeworkREST

AsyncHttpClient-2-1, fatal error: 46: General SSLEngine problem
java.security.cert.CertificateException: No name matching localhost found

Spring Boot应用程序配置

application.properties

server.port=8085
server.ssl.key-alias=demo
server.ssl.key-password=changeit
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS
server.ssl.key-store=server.jks

在此处输入图片说明

Playframework应用程序配置

application.conf

play.ws.ssl.loose.acceptAnyCertificate = false
play.ws.ssl.loose.disableHostnameVerification = true

play.ws.ssl {
  trustManager = {
    stores = [
      { type = "PEM", path = "public.crt" }
    ]
  }
}

play.ws.ssl.debug = {
    all = false
    ssl = true
    certpath = true
}

如果我设置,play.ws.ssl.loose.acceptAnyCertificate = true那么它正在工作。我想将其保留为false,然后访问端点。

我觉得问题出在我的配置上,这就是为什么只添加配置。如果需要更多信息,我还将添加代码片段。

查看更多

提问者
kulsin
被浏览
47
Frischling 2020-02-04 20:11

多数民众赞成在密钥库的问题,您的客户端的配置方式,它检查密钥库中的元数据使用的主机名。因此,您必须将“主题” CN设置为“本地主机”,或者在主机名中添加带有“本地主机”的主题备用名称。

我最喜欢使用https://keystore-explorer.org/工具来最好地创建密钥库,在那里添加SAN很容易。Java的keytool可以做到这一点,尽管使用“ -ext san = dns:www.example.com”