생활
안드로이드 HTTPS통신 SSL관련 질문이 있습니다.
현재 안드로이드와 서버가 PHP를 통해 통신중입니다. 보안을 위해 HTTPS통신중이며, TrustManager를통해 Ca를 불러와 데이터를 암호화하여 통신을 합니다.
코드는 아래와 같습니다.
try { CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream caInput = context.getResources().openRawResource(R.raw.certificate); Certificate ca = null; try { ca = cf.generateCertificate(caInput); System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); } catch (CertificateException e) { e.printStackTrace(); } finally { caInput.close(); } String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); if (ca == null) { return null; } keyStore.setCertificateEntry("ca", ca); String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); tmf.init(keyStore); SSLContext sslContext= SSLContext.getInstance("TLS"); sslContext.init(null, tmf.getTrustManagers(), null); return sslContext.getSocketFactory(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (KeyStoreException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return null; }위 코드에서 문제는, 리소스에 certificate파일을 저장한다는건데 누가 apk 압축을풀어 인증서를 빼다가
패킷캡쳐 툴에 인증서를 등록한다던가, 앱을 새로 만들고, 그 인증서를 쓰면 서버 패킷을 뽑아낼수 있지않을까에서 시작했거든요.
키값은 어떻게 관리하는게 좋을까요? JNI로 뺀다한들, 마찬가지로 프로젝트를 생성해서 함수를 호출하면 데이터가 보일것 같고.. 궁금합니다.
아직 답변이 없어요.