모범 사례 및 튜토리얼

카우치베이스 모바일 iOS 앱의 인증서 고정

카우치베이스 라이트와 동기화 게이트웨이 간의 통신은 다음을 사용하여 암호화되고 보호됩니다. SSL/TLS. SSL/TLS 프로토콜은 공개 키 인프라(PKI) 메커니즘을 사용하여 X.509 인증서 를 사용하여 동기화 게이트웨이 서버의 ID를 설정합니다. 인증서는 일반적으로 신뢰할 수 있는 인증 기관에서 발급/서명하며 동기화 게이트웨이에 설치됩니다. 개발 환경에서는 이 인증서를 자체 서명할 수 있습니다.
인증서의 신뢰성이 어떻게든 손상되었거나 자체 서명된 인증서를 사용하는 경우 서버의 신원을 안정적으로 설정할 수 없으며 클라이언트와 서버 간의 통신에 대한 기밀성을 보장할 수 없습니다.
이러한 문제를 완화하기 위해 Couchbase Lite는 인증서 고정을 지원합니다. 인증서 고정은 애플리케이션에서 호스트를 인증서/공개 키에 "고정"하는 데 사용할 수 있는 기술입니다. 인증서는 일반적으로 대역 외 채널을 통해 클라이언트에 전달되며 클라이언트와 함께 번들로 제공됩니다. 인증서를 고정하면 확인 클라이언트 애플리케이션은 더 이상 서명을 확인하기 위해 신뢰할 수 있는 타사에 의존할 필요가 없으며 이 기술은 자체 서명 인증서에서도 작동합니다.
이 게시물에서는 Coucbase Lite iOS 클라이언트 애플리케이션 내에서 인증서를 고정하는 방법에 대해 설명합니다.

릴리스 1.4 는 iOS에서만 인증서 고정을 지원합니다. 곧 출시될 2.0 릴리스 (현재 개발자 프리뷰 버전)는 지원되는 모든 모바일 플랫폼에서 고정을 지원합니다. 이 글에서 설명하는 코드 조각은 다음과 같은 플랫폼에 적용됩니다. 현재 프로덕션 버전 를 사용해 보세요. 릴리스 2.0의 인증서 고정에 대한 향후 블로그 포스팅을 기대해 주세요.

문제

카우치베이스 라이트와 동기화 게이트웨이 간의 통신은 다음을 사용하여 암호화됩니다. 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 웹사이트 인증서 고정에 대한 좋은 참고 자료입니다.

주의

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

배경

카우치베이스 모바일 스택에는 다음이 포함됩니다. 카우치베이스 라이트 장치에서 로컬로 실행되는 임베디드 데이터베이스와 동기화 게이트웨이 클라우드에서 일반적으로 지원되는 카우치베이스 서버 클라우드에서 데이터를 유지합니다. 동기화 게이트웨이는 여러 장치에서 문서 복제를 처리합니다.

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

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

인증서 생성 시 주의해야 할 몇 가지 사항: - 다음과 같습니다.
- 인증서 및 해당 개인 키는 .pem 형식이어야 합니다.
- 동기화 게이트웨이에 액세스할 수 있는 위치에 인증서를 설치합니다.
- 자체 서명 인증서를 생성하는 경우, 가장 중요한 필드는 아마도 공통 이름. 동기화 게이트웨이의 FQDN이어야 합니다. 동기화 게이트웨이가 없는 경우에는 사용 용도 localhost 를 로컬 호스트 또는 동기화 게이트웨이의 고정 IP주소로 설정합니다.
self signed certificate
구성이 완료되면 동기화 게이트웨이는 https를 통해 액세스할 수 있어야 합니다.

iOS 앱의 번들 인증서

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

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

  • .xcodeproj 파일을 열고 .der 파일을 poejct로 끌어다 놓습니다. 다음 사항이 있는지 확인하세요. "필요한 경우 파일 복사" 옵션 선택
    Copy files into xcode
  • 복사 후 프로젝트 구조는 다음과 같습니다.
    Certificate Added
  • 동기화 게이트웨이 서버 인증서 고정
    몇 줄의 코드만 있으면 됩니다. 코드는 한 번만 실행해야 합니다. 따라서 코드에서 초기화할 때 CBLManager 를 사용하는 것도 좋은 선택이 될 수 있습니다.

1단계와 2단계는 설명이 필요 없습니다.

3단계: SecCertificate 는 X.509 인증서를 나타내는 핵심 재단 객체입니다.

4단계: 동기화 게이트웨이 인증서를 사용하여 Couchbase 복제기를 구성해야 합니다. setAnchorCerts 메서드의 CBLR응용 객체를 지정합니다. 다음을 지정하여 오직이것들 as true로 설정하면 복제기에 이 인증서만 신뢰하도록 지시하는 것입니다. 다음과 같이 설정한 경우 false를 클릭하면 iOS 플랫폼에서 신뢰하는 기본 제공 루트 인증서 목록에 동기화 게이트웨이 인증서를 추가하는 것입니다.

끝입니다! 몇 단계만 거치면 iOS 앱에서 인증서 고정을 사용 설정할 수 있습니다.

다음 단계

이 포스팅을 통해 알 수 있듯이 인증서 고정은 iOS 앱에서 매우 쉽게 구성할 수 있습니다. V1.4의 지원은 iOS로 제한되어 있지만, 곧 출시될 예정인 2.0 릴리스 (현재 개발자 프리뷰 중)에 다른 모바일 플랫폼도 지원할 예정입니다.
질문이나 피드백이 있으시면 아래에 댓글을 남기거나 트위터 @rajagp 또는 이메일로 저에게 연락해 주세요. priya.rajagopal@couchbase.com. . 카우치베이스 포럼 를 통해 질문할 수 있습니다.

 

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

Author

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

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

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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