java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
에러가 났는데 해당 도메인은 신뢰할 수 없는 인증서라 그렇다고 한다.
해결방법으로는
1. 소스에서 API 호출하는 웹 서버의 CA 를 강제로 하드코딩해서 신뢰 시켜버리기
2. API 호출 웹 서버의 설정을 변경하기
가 있는데 웹 서버를 내가 만들었기 때문에 2번으로 진행한다.
안드로이드 에뮬레이터가 아닌 실제 디바이스에서는 API 호출 해서 잘 받아오는데
(안드로이드 에뮬이 아닌 실제 사용중인 모바일 디바이스에선 왜 잘 받아오냐 =>
아마 이런걸 체인 에러(최신 디바이스 에서는 최신 루트, 최신 인증서를 보유하고 있는데
일부 구형에서는 보유를 안하고 있어서 인식을 못하는 듯) 라고 하나보다)
API 서버는 정상적으로 SSL 이 적용 중이라고 나온다.
openssl 의 s_client 로 현재 운영중인 웹 서버의 SSL 정보를 봤다.
1. 네이버
>openssl s_client -connect naver.com:443 | openssl x509 -noout -subject -issuer
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify error:num=19:self signed certificate in certificate chain
subject= /C=KR/ST=Gyeonggi-do/L=Seongnam-si/O=NAVER Corp./CN=*.www.naver.com
issuer= /C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
2. 내 서버
>openssl s_client -connect www.maani.com:443 | openssl x509 -noout -subject -issuer
depth=0 CN = www.maani.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = www.maani.com
verify error:num=21:unable to verify the first certificate
verify return:1
subject= /CN=www.maani.com
issuer= /C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA