gpt4 book ai didi

Java:在 Spring Boot 中连接到服务时出现 SSLHandshake 异常

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:26 26 4
gpt4 key购买 nike

我正在开发 Apple Pay POC,在此过程中,我尝试使用休息服务,但很难通过 Java 代码连接到该服务器。

但是,使用下面的curl命令可以正常工作。

curl -v --cert publicCert.pem:srk --key privateKey.pem -H Content-type:application/json --request POST --data 
{
"merchantIdentifier": "merchant.com.xxxx.srk-demos",
"displayName": "poc",
"initiative": "web",
"initiativeContext": "srk-demos.xxxx.com"
}
https://apple-pay-gateway-cert.apple.com/paymentservices/startSession

我所得到的只是一个 merchant.p12 文件,我从中提取了 pem 格式的私钥和公共(public)证书。私钥的密码与 p12 文件相同,在本例中为 srk。

我使用 Spring Boot 和 RestTemplate 来使用该服务。将 mic.p12 直接导入到 jks。并且,将 jks 放入我的 Spring Boot 应用程序的 resources 文件夹中。

并按照 Sasha Shpota for this relevant StackOverflow question 方法中的建议通过代码加载此 jks但在我的情况下它也不起作用。

对此的任何想法或指示都值得赞赏。我可以使用 java.lang.Runtime 类调用上述工作 curl 命令,但我相信这不是有效的 java 方法。

我使用的是 OpenJDK8

最佳答案

我已关注this post这对我有用。

创建了具有私钥+公共(public)证书的身份存储以及包含服务器证书的信任存储。

我之前错过了什么?尝试使用以下代码片段加载 p12 文件

try(CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(yourLoadSSLFunction()).build()){
}

不应将其包含在带有资源的 try 中,而应像这样使用

CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(yourLoadSSLFunction()).build()

RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
restTemplate.setRequestFactory(requestFactory);

关于Java:在 Spring Boot 中连接到服务时出现 SSLHandshake 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59239435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com