Spring JAVA SSL - 找不到与本地主机匹配的名称

发布时间:2021-03-07 21:31

我有两个 SSL 端点,它们共享相同的 application.properties 和密钥存储文件。

我想让一个端点调用另一个,但收到错误 No name matching localhost found

如何调整此设置以允许一个微服务按照下面的预期调用其他微服务?

我尝试了以下解决方案但无济于事:

@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
public class submitapplicationcontroller {

    @Bean
    public WebClient.Builder getWebClientBuilder(){
        return WebClient.builder();
    }

    @Autowired private WebClient.Builder webClientBuilder;

    @PostMapping("/submitapplication")
    public String submitapplication() {
        
        /***   Returns Error Found Below   ***/

        String response = webClientBuilder.build()
            .post()
            .uri("https://localhost:8080/validateaddress")
            .retrieve()
            .bodyToMono(String.class)
            .block();
        
        return response;
    }
}
javax.net.ssl.SSLHandshakeException: No name matching localhost found
at java.base/sun.security.ssl.Alert.createSSLException
Error has been observed at the following site(s):
|_ checkpoint ⇢ Request to POST https://localhost:8080/v1/validateaddress
@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
public class validateaddresscontroller {
    
    @PostMapping("/validateaddress")
    public String validateaddress() {
        
        return "response";

    }

}
server.ssl.key-alias=server
server.ssl.key-password=asensitivesecret
server.ssl.key-store=classpath:server.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS
server.ssl.key-store-password=asensitivesecret
回答1

这里的问题是我创建和实施证书的方式。我有 2 个单独的密钥库和证书;一个名为“server”,一个名为“localhost”。我将localhost证书添加到服务器keystore中,并将服务器keystore和证书应用到springboot应用/application.properties中。

您需要做的就是创建一个名为“localhost”的证书和密钥库,您必须使用它来申请应用程序/application.properties。

创建 localhost JKS 和证书后应该有什么

server.ssl.key-alias=localhost
server.ssl.key-password=asensitivesecret
server.ssl.key-store=classpath:localhost.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS
server.ssl.key-store-password=asensitivesecret
  • 注意:我认为您实际上不必创建名为“localhost”的 JKS,只需创建证书即可。我只是出于测试目的。