无法在spring rest模板客户端中找到有效的目标认证路径。

问题描述 投票:4回答:3

我越来越

线程 "main "中的异常 org.springframework.web.client.ResourceAccessException

的程序。

private static String       url    = "https://localhost:8080/ipn";
public static void main( String[] args )
{
    HttpHeaders headers = new HttpHeaders();
    headers.add( "Accept", "application/json" );
    headers.setContentType( MediaType.APPLICATION_JSON );
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
    DefaultHttpClient httpClient = (DefaultHttpClient) requestFactory.getHttpClient();

    RestTemplate restTemplate = new RestTemplate( requestFactory );
    requestChange( headers, restTemplate );
}

private static void requestChange( HttpHeaders inHeaders, RestTemplate inRestTemplate )
{
    Map<String, String> params = new HashMap<String, String>();

    params.put( "PresentmentCurrencyCode", "INR" );
    params.put( "SettlementCurrencyCode", "INR" );
    HttpEntity<String> request = new HttpEntity<String>( inHeaders );
    ResponseEntity<String> response = inRestTemplate.exchange( url, HttpMethod.GET, request, String.class, params );
    System.out.println( response.toString() );
}

我在访问以下程序时得到以下错误信息 url 在spring rest模板客户端中,我在 "main "线程中收到以下程序的Exception:private static String url = "https /localhost:80ipn"。

Exception in thread "main" org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://xmlservice-stg03extf.symantec.com/SymWalletServices/PayPalListner/ipn":sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:503)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:459)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:408)
at com.np.symantec.ChargeBackClient.requestChargeBack(ChargeBackClient.java:94)
at com.np.symantec.ChargeBackClient.main(ChargeBackClient.java:74)
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:543)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:409)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:88)
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46)
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:49)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:488)
... 4 more
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
at sun.security.validator.Validator.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
... 25 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
... 31 more
java spring rest security ssl
3个回答
1
投票

看来你的客户端不信任你正在调用的资源。你必须导入目标资源的公钥。


0
投票

可能有打字错误的 本地主机 拼写

试着改成下面的样子。

private static String url = "https:/localhost:8080ipn。";


0
投票

你似乎没有在任何地方设置SSL上下文,所以你的应用程序不知道如何验证你建立的https连接。

例如,你需要在初始化 httpClient 时设置它。

socketFactory = new SSLConnectionSocketFactory(sslContext);
httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
© www.soinside.com 2019 - 2024. All rights reserved.