Notice
Recent Posts
Recent Comments
Link
투케이2K
911. (Android/Java) [간단 소스] TrustManagerFactory 간단 설명 및 사용 옵션 정리 - SSL , TLS 연결 인증서 관리 본문
Android
911. (Android/Java) [간단 소스] TrustManagerFactory 간단 설명 및 사용 옵션 정리 - SSL , TLS 연결 인증서 관리
투케이2K 2024. 12. 4. 20:03[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Java / Kotlin
- 개발 툴 : AndroidStudio
- 기술 구분 : TrustManagerFactory / SSL , TLS 연결 인증서 관리
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------
1. TrustManagerFactory 은 Android Api 1 에서 추가 되었으며, keyStore 에 저장 된 X509Certificate 인증서를
SSL , TLS 연결 시 신뢰할 수 있게 설정해주는 객체입니다
2. TrustManagerFactory 에 포함 된 주요 함수 :
>> getAlgorithm() : 알고리즘 이름을 반환합니다
>> getDefaultAlgorithm() : 기본 TrustManagerFactory 알고리즘 이름을 가져옵니다
>> getInstance() : TrustManagerFactory 팩토리 역할을 하는 객체를 반환합니다
>> getProvider() : TrustManagerFactory 객체의 제공자를 반환합니다
>> getTrustManagers() : TrustManagers 를 반환합니다
>> init(KeyStore ks) : 인증 기관 및 관련 신뢰 자료로 팩토리를 초기화합니다
3. TrustManagerFactory 사용 예시 소스 코드 :
// ---------------------------------------------------
// TODO [Certificate Type] : 인증서 타입 지정
// ---------------------------------------------------
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// ---------------------------------------------------
// TODO [Load CA certificate] : CA 인증서 지정 : CA_FILE 은 InputStream
// ---------------------------------------------------
X509Certificate caCert = (X509Certificate) cf.generateCertificate(CA_FILE);
// ---------------------------------------------------
// TODO [Load client certificate] : 클라이언트 CRT 인증서 지정 (클레임 인증서)
// ---------------------------------------------------
X509Certificate clientCert = (X509Certificate) cf.generateCertificate(CRT_FILE);
// ---------------------------------------------------
// TODO [Load client private key] : 클라이언트 private key 키 파일 지정
// ---------------------------------------------------
PrivateKey privateKey = C_App.loadPrivateKey(PRIVATE_KET_FILE);
// ---------------------------------------------------
// TODO [Create a KeyStore for the client certificate and private key]
// ---------------------------------------------------
// TODO [클라이언트 인증서와 키파일을 키스토어에 저장 수행] : [Aws 의 경우 KeyStore 에 저장 된 형식이 BKS 필요]
// ---------------------------------------------------
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
keyStore.setCertificateEntry("ca-cert", caCert);
keyStore.setKeyEntry("client-key", privateKey, "password".toCharArray(), new Certificate[]{clientCert});
// ---------------------------------------------------
// TODO [Create a TrustManager that trusts the CA in our KeyStore]
// ---------------------------------------------------
// TODO [KeyStore 에서 CA 를 신뢰하는 TrustManager 를 만듭니다]
// ---------------------------------------------------
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
https://developer.android.com/reference/javax/net/ssl/TrustManagerFactory
// --------------------------------------------------------------------------------------
반응형
'Android' 카테고리의 다른 글
Comments