Android에서 SSL 핸드셰이크 예외 문제를 해결하는 방법
2569 단어 programmingandroidkotlin
베타 테스트용 MVP를 출시하기 직전에 도메인 이름을 획득하고 서버에서 SSL을 활성화했습니다. 이는 기본 URL 체계가 HTTPS가 됨을 의미합니다(예: https://api.example.com ).
보안 URL을 사용하도록 앱을 변경하면 전체 앱이 중단됩니다. 모든 엔드포인트가 서버에 성공적으로 연결되지 않았습니다. 기본적으로 클라이언트와 서버 간의 네트워크 핸드셰이크 프로세스가 성공하지 못했습니다. 다음은 로그의 오류 내용입니다.
<-- HTTP FAILED: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
약간의 조사를 한 후 나는 그것이 안드로이드 시스템에서 신뢰하지 않는 서버 인증서에 문제가 있음을 발견했습니다. 이는 다음과 같은 이유 때문일 수 있습니다.
제 경우에는 서버 인증서가 자체 서명되었기 때문에 이 문제가 발생했습니다.
Android 설명서에는 자체 서명된 인증서를 신뢰하도록 앱을 구성하는 명확한 방법이 있으며, 이에 대해 3단계로 설명하겠습니다.
1 단계
원시 폴더에 crt 파일을 추가합니다.
이 파일은 서버에서 검색됩니다. 백엔드 엔지니어에게 디지털 인증서를 요청할 수 있습니다. 확장자는 .crt여야 합니다.
2 단계
아래와 같이 XML 네트워크 보안 구성 파일(network_security_config.xml)을 생성합니다.
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includeSubdomains="true">api.example.com</domain>
<trust-anchors>
<certificates src="@raw/certificate" />
</trust-anchors>
</domain-config>
</network-security-config>
3단계
애플리케이션의
Manifest.xml
파일에서 네트워크 구성 설정을 지정하십시오.이 3단계를 완료하면 추가 문제 없이 백엔드와 원활하게 연결해야 합니다.
Reference
이 문제에 관하여(Android에서 SSL 핸드셰이크 예외 문제를 해결하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/enyason/how-to-fix-issue-of-ssl-handshake-exception-on-android-g6g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)