0
우리 회사는 자체 ROOT
인증서를 가지고 있습니다. 이 인증서를 사용하여 그들은 intermediate
인증서에 서명했습니다.Java cacerts에서 루트 및 중간 인증서를 가져 오는 올바른 방법
그런 다음 server
인증서에 대해 CSR을 발행하고 intermediate
인증서로 서명했습니다.
intermediate
에 의해 서명 server
인증서가 서버와의 SSL 연결을 설정할 수 있도록하기 위해, 자바의 cacerts 파일에 ROOT
인증서와 intermediate
을 가져올 수있는 올바른 방법은 무엇입니까?
openssl s_client -showcerts -connect host:443
CONNECTED(00000003)
depth=0 C = COUNTRYCODE, ST = myCountry, O = myOrganization, CN = myServer, emailAddress = myMail
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = COUNTRYCODE, ST = myCountry, O = myOrganization, CN = myServer, emailAddress = myMail
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = COUNTRYCODE, ST = myCountry, O = myOrganization, CN = myServer, emailAddress = myMail
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=COUNTRYCODE/ST=myCountry/O=myOrganization/CN=myServer/emailAddress=myMail
i:/CN=INTERMEDIATECERT
-----BEGIN CERTIFICATE-----
MIIFr...
-----END CERTIFICATE-----
---
Server certificate
subject=/C=COUNTRYCODE/ST=myCountry/O=myOrganization/CN=myServer/emailAddress=myMail
issuer=/CN=INTERMEDIATECERT
---
No client certificate CA names sent
---
SSL handshake has read 1601 bytes and written 589 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
감사합니다 수정 cacerts에 대신 자신의 신뢰를 사용하는 것이 좋습니다. Java 1.6이 인증서 체인을 구축 할 수있는 이유는 무엇인지 이해할 수 없지만 Java 1.7/1.8은 그렇지 않습니다. 또한 Java 1.6은 중간 인증서를 cacerts 파일로 가져 오는 경우에만 SSL 연결을 설정할 수 있습니다. – dplesa
다른 자바 버전과 SSL 핸드 셰이크 실패와 관련하여이 질문을 던졌습니다 : http://stackoverflow.com/questions/42008228/sun-security-validator-validatorexception-pkix-path-building-failed-with-java – dplesa
_unable to 요청한 대상에 대한 유효한 인증서 경로를 찾으십시오. 즉, SSL 연결의 TrustManager가 서버가 보낸 인증서에 대해 구성된 트러스트 스토어의 신뢰할 수있는 인증서를 찾지 못했음을 의미합니다. 1.6과 1.7 사이의 신뢰 검증에 대한 근본적인 변화가 없었던 것 같습니다. truststore를 설정하는 권장 방법은 내가 대답 한 대답은 – pedrofb