검색결과 리스트
안드로이드 SSL untrust에 해당되는 글 1건
- 2020.06.04 안드로이드 SSL인증서 오류
글
안드로이드 SSL인증서 오류
참조사이트 : https://developer.android.com/training/articles/security-ssl
에러내용 :
E Conscrypt: ------------------Untrusted chain: ----------------------
E Conscrypt: == Chain0 ==
E Conscrypt: Version: 3
E Conscrypt: Serial Number: 1
원인 :
중개(체인) 인증서를 정상적으로 확인 하지 못해 신뢰하지 못하는 인증기관으로 인식
웹상에서는 문제없이 동작하나 모바일단말에서는
서버 인증서의 발급자를 확인하지 못하는 경우가많아 중개(체인) 인증서가 필요함.
해결방법
1. 인증서 재발행
위의 링크를 참조하여 제시된 해결방법에 따라 적용.
2. 앱상에서 해당 인증서를 가지고 직접 인증
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate ca;
String certificateString = "-----BEGIN CERTIFICATE-----\n" +
"MIIG3DCCBcSgAwIBAgIMCtlb/Nurv8TlrjaNMA0GCSqGSIb3DQEBCwUAMGYxCzAJ\n" +
"BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTwwOgYDVQQDEzNH\n" +
"nlc/e3o5NtzmUPuuEnfbxPunmNX9w6v0WWppv8kkT3s=\n" +
"-----END CERTIFICATE-----";
ByteArrayInputStream derInputStream = new ByteArrayInputStream(certificateString.getBytes());
ca = cf.generateCertificate(derInputStream);
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
registry.register(new Scheme("https", new MySSLSocketFactory(keyStore), httpSport));
---------MysslSocketFactory------
class MySSLSocketFactory extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance("TLS");
public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
super(truststore);
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(truststore);
sslContext.init(null, tmf.getTrustManagers(), null);
}
@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
}
@Override
public Socket createSocket() throws IOException {
return sslContext.getSocketFactory().createSocket();
}
}
일반적으로 인증서 파일을 저장하여 파일로 읽어서 사용하는데, 별 차이는 없어 보여 String을 직접 넣었네요.
2번째 방법 보단 인증서교체를 통한 방법이 좋습니다.
그럼 도움이 됐길. !
'프로그래밍 > 안드로이드' 카테고리의 다른 글
누가 로그켓 안보이는 문제. (logcat empty) (2) | 2020.08.05 |
---|---|
DOZE 모드 테스트 (0) | 2020.05.07 |
택배배송 URL / 택배 사칭 스미싱, 피싱 앱 분석 후기[bit.ly ] (1) | 2019.11.25 |
Android DB파일 저장 adb pull 'permission denied' (0) | 2019.01.31 |
Android 이슈 - SMS 및 CALL_LOG 권한 사용에 적용되는 Google Play 정책 변경사항 (0) | 2018.12.21 |
RECENT COMMENT