[컴][안드로이드] 안드로이드 https 에서 개인 인증서 사용방법

안드로이드에서 ssl 사용하기, 안드로이드에서 개인 인증서 추가하기, 사설 인증서 추가하기, 인증서 없이 ssl 사용하기



안드로이드 https 에서 개인 인증서 추가하기

여기서 핵심은 실제로 추가하는 것이 아니라, keystore 를 직접 만들어서 이 keystore 에 인증서를 담고, https 통신을 하는 것이다.



pc에서 인증서 추가시

기본적으로 우리가 local pc 에 인증서를 추가한다면, 여기에 나온 것처럼 runtime 에서 사용하는 cert 에 추가하면 된다. 이것은 우리가 마음대로 접근할 수 있어서 그냥 넣을 수 있다.

그런데 android 는 이부분이 기본적으로 막혀있다. 우리는 dalvik runtime 을 마구 건들 수 없다. 적어도 rooting 을 하지 않는다면 말이다. 물론 이 부분이  Android version 4.0 이후 달라졌다.



app 에서 개인이 만든 인증서 사용시

그리고 또 하나, 우리가 만약 application 을 만들어서 배포하는데, 공인된 인증서가 아닌 다른 녀석을 쓴다면 문제가 된다. 이녀석을 인증하기 위해서 runtime 에서 사용하는 cert 를 확인할 텐데, 이녀석을 우리가 수정할 수가 없다.

그래서 이것을 중간에서 다른 녀석이 해주는 것이다. 그것이 아래 링크에서 하는 이야기이다.
  1. Security with HTTPS and SSL  > Unknown certificate authority | http://developer.android.com/
  2. HTTPS with Client Certificates on Android - Chariot Solutions
방법은 기존의 keystore 를 보지 않고, 새롭게 keystore 를 만들고, 거기에 내가 원하는 certificate 을 넣어주는 것이다. 이렇게 해서 https 통신할 때 이 keystore 를 사용하도록만 해주면 된다.

1 번째 방법에서는 DER format 으로 된 certificate 을 불러오고, 이 녀석을 keystore 에 넣는 과정을 거친다.

2번째 글에서는 다양한 방법을 보여주는데, 1번째와 같은 방법도 소개한다. 그런데 여기서 사용하는 소스를 볼 수 있어서 훨씬 이해하고, 사용하기 좋은 듯 하다.





See Also


위 링크에선 각 저장포맷에 대한 정보를 얻을 수 있다.  PEM -> PKCS#12 로 변환 하는 법도 알려준다. 기본적으로 안드로이드는 java key store .jks를 사용한다. (KeyStore | Android Developers)

pem -> pkcs#12

# openssl pkcs12 -export -in dummy-cert.pem -inkey dummy-key.pem -out dummy-certkey.p12
Enter Export Password:
Verifying - Enter Export Password:

pem -> der

# openssl rsa -inform PEM -outform DER -in dummy-key.pem -out dummy-key.der
# openssl x509 -inform PEM -outform DER -in dummy-cert.pem -out dummy-cert.der




Reference



댓글 없음:

댓글 쓰기