Jersey가 SSL 인증서 오류를 무시하도록 만드는 방법은 무엇입니까?

Simon

오류 추적 :

javax.ws.rs.ProcessingException: 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.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:287)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252)
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:420)
at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:316)
at com.xxx.rest.RestClient.execRequest(RestClient.java:49)
at com.xxx.RestClientTest.test(RestClientTest.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
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 sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:394)
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:285)
... 36 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(PKIXValidator.java:387)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491)
... 51 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
... 57 more

apache httpclient와 같은 다른 모든 클라이언트와 마찬가지로 Jersey는 기본적으로 SSL 인증서를 확인합니다. 그러나 개발 단계와 같은 경우에는 CA에서 신뢰할 수있는 SSL 인증서가 없을 가능성이 높습니다. 그렇다면 Jersey가 SSL 인증서 오류를 무시하도록하려면 어떻게해야합니까?

카시오 몰린

모든 인증서신뢰하는 것은 매우 위험 합니다. 그것을 할 때 조심하십시오 .

다음 코드는 yukuan의 답변에 표시된 것과 크게 다르지 않습니다 . 그러나 다음 솔루션은 JAX-RS 클라이언트 API 만 사용합니다 . 이론적으로는 다른 JAX-RS 구현에서도 작동해야합니다.

TrustManager[] trustManager = new X509TrustManager[] { new X509TrustManager() {

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return null;
    }

    @Override
    public void checkClientTrusted(X509Certificate[] certs, String authType) {

    }

    @Override
    public void checkServerTrusted(X509Certificate[] certs, String authType) {

    }
}};

SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManager, null);

Client client = ClientBuilder.newBuilder().sslContext(sslContext).build();

참고 1 : 작성 시점에 위에서 설명한 표준 솔루션은 RESTEasy에서 작동하지 않습니다. RESTEasy HttpClient는 Apache HttpComponents 프로젝트에서 HTTP 호출을 위임합니다 . RESTEasy로 모든 인증서를 신뢰하려면을 HttpClient사용자 정의해야합니다. 자세한 내용은이 답변을 참조하십시오 .

참고 2 :https://badssl.com 잘못된 SSL 구성에 대해 클라이언트를 테스트하는 데 유용한 리소스를 찾을 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Firefox가 모든 SSL 인증 오류를 무시하도록하는 방법은 무엇입니까?

분류에서Dev

Kustomize 오버레이가 base에서 secretGenerator를 무시하도록 만드는 방법은 무엇입니까?

분류에서Dev

PIP를 설치하는 동안 SSL 인증서 오류를 해결하는 방법은 무엇입니까?

분류에서Dev

CA SSL 인증서를 사용하도록 Dart를 설정하는 방법은 무엇입니까?

분류에서Dev

가능한 경우 내 apache2 서버에서 하나의 웹 사이트에 대한 SSL 인증서를 만드는 방법은 무엇입니까?

분류에서Dev

Amazon S3 버킷에 SSL 인증서를 추가하는 방법은 무엇입니까?

분류에서Dev

도메인에 Python으로 SSL 인증서가 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

백엔드 API가 https 인증서를 처리하도록하는 방법은 무엇입니까?

분류에서Dev

OSS 업그레이드에서 Nuxt.js의 SSL 오류를 무시하는 방법은 무엇입니까?

분류에서Dev

"서버 모드 SSL이 연결된 개인 키가있는 인증서를 사용해야 함"예외를 방지하는 X509 인증서를 만드는 방법은 무엇입니까?

분류에서Dev

인증 기관에서 EC2로 SSL 인증서를 복사하는 방법은 무엇입니까?

분류에서Dev

Minitest 오류 코드가 오류 메시지를 반환하도록하는 방법은 무엇입니까?

분류에서Dev

메서드가 하나 또는 두 개의 인수를 받도록 만드는 방법은 무엇입니까?

분류에서Dev

여러 인증서가있는 LDAP SSL 서버에 필요한 인증서를 반환하는 방법은 무엇입니까?

분류에서Dev

임베디드 인증서에 대한 JVM SSL 인수를 지정하는 방법은 무엇입니까?

분류에서Dev

셰프와 함께 SSL nginx를 구성해야합니다. SSL 인증서를 배포하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

인수에 따라 getter가 무언가를 반환하도록 만드는 방법은 무엇입니까?

분류에서Dev

프로그래밍 방식으로 SSL 인증서를 구입하는 방법은 무엇입니까?

분류에서Dev

해시 (#)를 무시하도록`goBack ()`메서드를 만드는 방법은 무엇입니까?

분류에서Dev

Rails mysql2 : mysql 서버의 SSL 인증서를 확인하는 방법은 무엇입니까?

분류에서Dev

Twig가 Polymer를 의미하는 중괄호를 무시하도록 만드는 방법은 무엇입니까?

분류에서Dev

btrfs 체크섬 오류가 발생할 때 Ubuntu에서 알림을 표시하도록 만드는 방법은 무엇입니까?

분류에서Dev

tcl 스크립트에서 aol 서버에 SSL 인증서를 적용하는 방법은 무엇입니까?

분류에서Dev

bash가 xargs 명령을 무시하고 로그인하도록 만드는 방법은 무엇입니까?

분류에서Dev

bash가 xargs 명령을 무시하고 로그인하도록 만드는 방법은 무엇입니까?

분류에서Dev

YouTube 데이터 API V3에서 컬 오류 60 : ssl 인증서 문제를 해결하는 방법은 무엇입니까?

분류에서Dev

Goddady 인증서를 사용하여 NGINX에서 SSL을 활성화하는 방법은 무엇입니까?

분류에서Dev

SSL에서 사용되는 인증서의 PKCS를 식별하는 방법은 무엇입니까?

분류에서Dev

로컬에서 Firebase 기능을 실행할 때 https를 작동하고 자체 서명 된 SSL 인증서를 추가하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Firefox가 모든 SSL 인증 오류를 무시하도록하는 방법은 무엇입니까?

  2. 2

    Kustomize 오버레이가 base에서 secretGenerator를 무시하도록 만드는 방법은 무엇입니까?

  3. 3

    PIP를 설치하는 동안 SSL 인증서 오류를 해결하는 방법은 무엇입니까?

  4. 4

    CA SSL 인증서를 사용하도록 Dart를 설정하는 방법은 무엇입니까?

  5. 5

    가능한 경우 내 apache2 서버에서 하나의 웹 사이트에 대한 SSL 인증서를 만드는 방법은 무엇입니까?

  6. 6

    Amazon S3 버킷에 SSL 인증서를 추가하는 방법은 무엇입니까?

  7. 7

    도메인에 Python으로 SSL 인증서가 있는지 확인하는 방법은 무엇입니까?

  8. 8

    백엔드 API가 https 인증서를 처리하도록하는 방법은 무엇입니까?

  9. 9

    OSS 업그레이드에서 Nuxt.js의 SSL 오류를 무시하는 방법은 무엇입니까?

  10. 10

    "서버 모드 SSL이 연결된 개인 키가있는 인증서를 사용해야 함"예외를 방지하는 X509 인증서를 만드는 방법은 무엇입니까?

  11. 11

    인증 기관에서 EC2로 SSL 인증서를 복사하는 방법은 무엇입니까?

  12. 12

    Minitest 오류 코드가 오류 메시지를 반환하도록하는 방법은 무엇입니까?

  13. 13

    메서드가 하나 또는 두 개의 인수를 받도록 만드는 방법은 무엇입니까?

  14. 14

    여러 인증서가있는 LDAP SSL 서버에 필요한 인증서를 반환하는 방법은 무엇입니까?

  15. 15

    임베디드 인증서에 대한 JVM SSL 인수를 지정하는 방법은 무엇입니까?

  16. 16

    셰프와 함께 SSL nginx를 구성해야합니다. SSL 인증서를 배포하는 가장 좋은 방법은 무엇입니까?

  17. 17

    인수에 따라 getter가 무언가를 반환하도록 만드는 방법은 무엇입니까?

  18. 18

    프로그래밍 방식으로 SSL 인증서를 구입하는 방법은 무엇입니까?

  19. 19

    해시 (#)를 무시하도록`goBack ()`메서드를 만드는 방법은 무엇입니까?

  20. 20

    Rails mysql2 : mysql 서버의 SSL 인증서를 확인하는 방법은 무엇입니까?

  21. 21

    Twig가 Polymer를 의미하는 중괄호를 무시하도록 만드는 방법은 무엇입니까?

  22. 22

    btrfs 체크섬 오류가 발생할 때 Ubuntu에서 알림을 표시하도록 만드는 방법은 무엇입니까?

  23. 23

    tcl 스크립트에서 aol 서버에 SSL 인증서를 적용하는 방법은 무엇입니까?

  24. 24

    bash가 xargs 명령을 무시하고 로그인하도록 만드는 방법은 무엇입니까?

  25. 25

    bash가 xargs 명령을 무시하고 로그인하도록 만드는 방법은 무엇입니까?

  26. 26

    YouTube 데이터 API V3에서 컬 오류 60 : ssl 인증서 문제를 해결하는 방법은 무엇입니까?

  27. 27

    Goddady 인증서를 사용하여 NGINX에서 SSL을 활성화하는 방법은 무엇입니까?

  28. 28

    SSL에서 사용되는 인증서의 PKCS를 식별하는 방법은 무엇입니까?

  29. 29

    로컬에서 Firebase 기능을 실행할 때 https를 작동하고 자체 서명 된 SSL 인증서를 추가하는 방법은 무엇입니까?

뜨겁다태그

보관