URL https://someurl.com에서 RESTful 서비스를 사용하려고합니다.Websphere에서 인증서 체인 오류가 발생했습니다.
Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "com.ibm.jsse2.SSLServerSocketFactoryImpl");
Security.setProperty("javax.net.ssl.trustStore", "cacerts.jks");
Security.setProperty("javax.net.ssl.keyStore", "keystore.jks");
Security.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
Security.setProperty("javax.net.ssl.trustStoreType", "JKS");
지금까지 수행 한 구성 변경은 다음과 같습니다 :
- 가 someurl으로 URL을 사용하여 인증서를 검색
true
- 에
com.ibm.websphere.ssl.retrieveLeafCert
을 설정하고 나는 내 코드에서 다음과 같은 속성을 추가 한 포트 443을 열고 트러스트 스토어에 추가했습니다. - 서버
를 다시 시작하지만 다음과 같은 예외가 점점 오전 : 나는 믿고있어
java.security.cert.CertPathValidatorException: Certificate chaining error
javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
java.security.cert.CertPathValidatorException: The certificate issued by CN=Walmart Root CA, O=Wal-Mart Stores Inc is not trusted; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error
at com.ibm.jsse2.o.a(o.java:22)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:423)
at com.ibm.jsse2.kb.a(kb.java:192)
at com.ibm.jsse2.kb.a(kb.java:176)
at com.ibm.jsse2.lb.a(lb.java:53)
at com.ibm.jsse2.lb.a(lb.java:464)
at com.ibm.jsse2.kb.s(kb.java:545)
at com.ibm.jsse2.kb.a(kb.java:530)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:79)
at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:437)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:142)
at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:686)
at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:98)
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:13)
at com.ibm.net.ssl.www2.protocol.https.b.connect(b.java:6)
at com.dwl.tcrm.tester.RESTClient_2.main(RESTClient_2.java:76)
에 따라이를 해결 할 수 있어요 내 포스트, 나는 이미 트러스트 스토어에 인증서를 추가했다.하지만 아무런 차이가 없다. 또한, 독립형 레스트 클라이언트를 통해 서비스를 공격하려했는데 같은 오류가 발생했다. –
@AyanBiswas하지만'(javax.net.ssl.trustStore ","cacerts.jks)'에'NodeDefaultTrustStore'에 추가하지 않을 것입니다.이'setProperty' 호출을 제거 했습니까? WebSphere가 사용하는 것과 다른 상점을 가리키고 있기 때문입니다. 그리고 체인 된 인증서의 전체 개념은 잎 대신에 루트 인증서를 사용하기 때문에'com.ibm.websphere.ssl.retrieveLeafCert' 속성을'true'로 설정해서는 안됩니다. – Gas
확인. 실수를 지적 해 주셔서 감사합니다. 시도해 보겠습니다. –