카우치베이스 모바일

카우치베이스 모바일로 안드로이드에서 인증서 고정하기

카우치베이스 모바일 2.0 는 모든 Couchbase 모바일 플랫폼에서 인증서 고정을 지원합니다. 인증서 고정은 애플리케이션에서 호스트를 인증서/공개 키에 "고정"하는 데 사용하는 기술입니다. Couchbase Lite와 동기화 게이트웨이 간의 통신은 다음을 사용하여 암호화 및 보호됩니다. SSL/TLS. SSL/TLS 프로토콜은 공개 키 인프라(PKI) 메커니즘을 사용하여 X.509 인증서 를 사용하여 동기화 게이트웨이 서버의 ID를 설정합니다. 인증서는 일반적으로 신뢰할 수 있는 인증 기관에서 발급/서명하며 동기화 게이트웨이에 설치됩니다.

개발 환경에서는 이 인증서를 자체 서명할 수 있습니다.

인증서의 신뢰성이 어떻게든 손상되었거나 자체 서명된 인증서를 사용하는 경우 서버의 신원을 안정적으로 설정할 수 없으며 클라이언트와 서버 간의 통신에 대한 기밀성을 보장할 수 없습니다. 이러한 문제를 완화하기 위해 Couchbase Lite는 다음을 지원합니다. 인증서 고정. 인증서 고정을 수행하기 위해 일반적으로 공개 키 인증서는 대역 외 채널을 통해 클라이언트 앱v에 전달되고 클라이언트 앱과 함께 번들로 제공됩니다. 인증서를 고정하면 확인 클라이언트 앱은 더 이상 서명을 확인하기 위해 타사 CA에 의존할 필요가 없습니다. 이 기술은 자체 서명 인증서로 구성된 동기화 게이트웨이와 통신하는 데도 필요합니다.

이 게시물에서는 Coucbase Lite 내에서 인증서를 고정하는 방법에 대해 설명합니다. 버전 2.0 활성화된 Android 앱입니다. 버전 1.4 의 경우 iOS에서만 인증서 고정을 지원하며, 이는 이 문서에서 설명한 블로그 게시물.

다음에서 Couchbase Mobile 2.0의 최신 사전 릴리스 빌드를 다운로드할 수 있습니다. 여기.

배경

SSL/TLS에 익숙하거나 이 글을 읽은 적이 있는 경우 블로그 게시물이 블로그 게시물의 "Couchbase Mobile로 인증서 고정 지원" 섹션으로 건너뛸 수 있습니다.

카우치베이스 라이트와 동기화 게이트웨이 간의 통신은 다음을 사용하여 암호화됩니다. SSL/TLS매우 높은 수준에서 TLS 프로토콜은 다음과 같이 작동합니다.
공개 키와 서버 ID가 포함된 X.509 인증서가 동기화 게이트웨이에 설치됩니다. 이 공개 키 인증서는 신뢰할 수 있는 타사 인증 기관에서 서명하거나 자체 서명할 수 있으며, 일반적으로 개발 환경에서는 후자의 경우가 많습니다.
연결이 설정되는 동안 Couchbase Lite를 실행하는 클라이언트 앱은 서버 인증서를 사용하여 동기화 게이트웨이의 신원을 확인합니다. Couchbase Lite는 신뢰할 수 있는 CA의 루트 인증서를 사용하여 인증서의 유효성을 검사합니다. 확인이 완료되면 클라이언트는 비밀 키 교환을 진행합니다. 그런 다음 공유된 비밀은 클라이언트와 동기화 게이트웨이 간의 통신을 암호화하는 데 사용됩니다.
Basic TLS Exchange
참고하세요. RFC 에서 SSL/TLS 프로토콜에 대한 자세한 내용을 확인하세요.

이 접근 방식에는 몇 가지 문제가 있습니다.
- 대부분의 상황에서는 CA의 신뢰성에 의존하는 것이 합리적이지만, CA 자체가 손상될 수 있습니다. 이 경우 인증에 사용되는 CA 자체가 신뢰할 수 없기 때문에 동기화 게이트웨이를 인증할 수 있는 신뢰할 수 있는 방법이 없습니다!
- 클라이언트-서버 통신은 동기화 게이트웨이로 가장한 악성 서버가 가짜 CA가 서명한 동기화 게이트웨이를 나타내는 가짜 인증서를 발급하는 중간자(MiTM) 공격의 대상이 될 수 있습니다. 클라이언트가 신뢰할 수 있는 루트 인증 기관 저장소에 가짜 CA의 인증서를 포함하도록 잘못 유도하면 클라이언트는 가짜 CA가 서명한 가짜 인증서를 신뢰하게 됩니다. 이렇게 되면 클라이언트는 이제 가짜 동기화 게이트웨이와 통신하게 됩니다.
- 개발 환경에서 자체 서명된 인증서를 사용하는 경우 클라이언트가 서버의 신원을 안정적으로 검증할 수 있는 방법이 없습니다.

인증서 고정

위에 나열된 문제를 처리하는 일반적인 방법 중 하나는 동기화 게이트웨이 서버를 인증서/공개 키에 "고정"하는 것입니다. 이 기술에서 Couchbase Lite는 신뢰할 수 있는 동기화 게이트웨이 인증서로 사전 구성됩니다. 따라서 연결이 설정되는 동안 Couchbase Lite는 이 사전 구성된 인증서를 사용하여 서버의 신원을 확인합니다. 따라서 인증서 확인을 위해 외부 타사 CA에 의존하지 않아도 됩니다.
그리고 OWASP 웹사이트 인증서 고정에 대한 좋은 참고 자료입니다.

주의

애플리케이션이 인증서와 함께 번들로 제공되므로 인증서가 만료될 때마다 애플리케이션을 새 인증서로 업데이트해야 한다는 점에 유의해야 합니다. 이는 사용자가 앱을 업그레이드해야 하는 모바일 환경에서는 조금 더 어려울 수 있습니다. 따라서 인증서가 만료되는 시기를 파악하고 인증서 만료 전에 새 인증서로 애플리케이션을 게시할 수 있도록 적절한 계획을 세우세요.

카우치베이스 모바일로 인증서 고정 지원

이 게시물은 Android 앱 개발 및 Couchbase Lite 2.0을 사용하도록 앱을 구성하는 데 익숙하다고 가정합니다. 그렇지 않은 경우 다음을 검토하시기 바랍니다. 시작하기 가이드. 우리는 사용할 것입니다 동기화 게이트웨이 1.5 클라우드에서 카우치베이스 서버 클라우드에서 데이터를 유지합니다. 카우치베이스 서버는 이 글의 논의와 관련이 없습니다.

동기화 게이트웨이에 인증서 설치

의 지침을 따르세요. 카우치베이스 개발자 포털 를 클릭하여 동기화 게이트웨이에 관련 서버 인증서를 생성/설치합니다.

인증서 생성 시 주의해야 할 몇 가지 사항: - 다음과 같습니다.

  • 인증서 및 해당 개인 키는 .pem 형식이어야 합니다.
  • 동기화 게이트웨이에 액세스할 수 있는 위치에 인증서를 설치합니다. 그렇게 하지 않으면 구성 파일로 동기화 게이트웨이를 시작할 때 오류가 발생합니다.

  • 생성하는 경우 자체 서명 인증서가장 중요한 분야는 아마도 공통 이름. 동기화 게이트웨이의 FQDN이어야 합니다. 동기화 게이트웨이가 없는 경우에는 사용 용도 10.0.2.2 를 로컬 호스트 또는 동기화 게이트웨이의 고정 IP주소로 설정합니다.

동기화 게이트웨이 구성 파일

동기화 게이트웨이 구성 파일에 다음 속성이 포함되어 있는지 확인합니다.

동기화 게이트웨이에서 SSL 설정 확인하기

SSL을 통해 동기화 게이트웨이에 연결할 수 있는지 확인하려면 다음을 실행합니다. curl 명령을 터미널 명령에 추가합니다. 바꾸다 localhost 를 동기화 게이트웨이의 IP 주소와 함께 아래 명령어로 입력합니다.

구성이 올바른 경우 출력에 다음과 같은 내용이 표시되어야 합니다.

  • 아래 명령을 사용하여 PEM 인증서를 der 형식으로 변환합니다.

다음을 참조할 수 있습니다. SSL 치트 시트 에서 다양한 openSSL 명령에 대한 자세한 내용을 확인하세요.

  • 복사 cert.pem 파일을 자산 폴더로 이동합니다. Android Studio 프로젝트 폴더는 다음과 비슷해야 합니다.
  • 동기화 게이트웨이 서버 인증서 고정
    • 인증서를 고정하려면 먼저 번들로 제공되는 인증서를 로드해야 합니다. 자산 폴더로 이동합니다.

이 예제에서는 [Apache Commons IO](https://commons.apache.org/proper/commons-io/description.html)의 IOUtils 유틸리티 클래스를 사용하여 파일 입력 스트림에서 읽은 인증서를 다음과 같이 변환합니다. 바이트 배열로 변환합니다. 변환을 위해 다른 도구/방법을 선택할 수 있습니다.

- 구성 리플리케이터 를 사용하여 고정된 인증서를 사용합니다. 실제 앱에서는 설정하기 전에 인증서에서 Null 확인을 합니다. 간결함을 위해 여기서는 확인을 생략합니다.

이제 끝났습니다! 몇 단계만 거치면 카우치베이스 모바일 2.0으로 안드로이드 앱에서 인증서 고정을 활성화할 수 있습니다.

다음 단계

이 블로그 게시물에서는 모바일 앱 내에서 인증서 고정의 이점과 Couchbase Lite 2.0에서 인증서 고정을 사용하도록 설정하는 방법에 대해 설명했습니다. 이 예에서는 Android 앱에 대해 설명했지만 다른 플랫폼에서도 접근 방식은 비슷할 것입니다.

질문이나 피드백이 있으면 아래에 댓글을 남기거나 트위터로 언제든지 문의해 주세요. @rajagp 또는 이메일을 보내주세요. priya.rajagopal@couchbase.com. . 카우치베이스 포럼 를 통해 질문할 수 있습니다.

 

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 프리야 라자고팔, 제품 관리 부문 선임 이사

프리야 라자고팔은 클라우드 및 엣지용 개발자 플랫폼을 담당하는 Couchbase의 제품 관리 수석 이사입니다. 그녀는 20년 이상 여러 기술 및 제품 리더십 직책을 맡으며 전문적으로 소프트웨어를 개발해 왔으며, 그중 10년 이상은 모바일 기술에 집중했습니다. TISPAN IPTV 표준 대표로서 IPTV 표준 사양에 핵심적인 기여를 했습니다. 네트워킹 및 플랫폼 보안 분야에서 22개의 특허를 보유하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.