TLS 활성화 및 구성
개요
이 가이드에서는 TLS 프로토콜 을 사용하여 MongoDB deployment에 대한 연결을 보호하는 방법을 배울 수 있습니다. TLS는 애플리케이션과 MongoDB 간의 통신을 보호하는 암호화 프로토콜입니다. TLS를 사용하도록 연결을 구성하려면 클라이언트를 생성할 때 TLS 옵션을 활성화하고 유효성 검사를 위해 인증서를 제공합니다.
이 가이드에는 다음 섹션이 포함되어 있습니다.
TLS 활성화 는 연결에서 TLS를 활성화 하는 방법을 설명합니다.
인증서 구성에서는 TLS를 구성하는 데 필요한 인증서를 설명합니다.
클라이언트의 참조 인증서는 TLS 옵션을 구성하기 위해
TlsOptions
구조체를 만드는 방법의 예시 를 제공합니다.추가 정보에서 이 가이드에 언급된 유형 및 메소드에 대한 리소스 및 API 문서 링크를 찾을 수 있습니다.
팁
TLS에 학습 보려면 전송 계층 보안에 대한 Wikipedia 항목을 참조하세요.
TLS 활성화
다음 방법 중 하나를 사용하여 MongoDB 인스턴스에 대한 연결에서 TLS를 활성화할 수 있습니다.
연결 문자열에서
tls
옵션을true
(으)로 설정ClientOptions
인스턴스의tls
필드를 빈TlsOptions
구조체가 있는Tls::Enabled
변형으로 설정하고 해당 옵션을 사용하여Client
을 인스턴스화합니다.
다음 Connection String 및 ClientOptions 탭에서 선택하여 해당 코드 샘플을 확인합니다.
참고
연결 문자열이 mongodb+srv
접두사를 포함하여 DNS SRV 레코드를 사용하는 경우 연결에서 기본적으로 TLS가 사용하도록 설정됩니다.
클라이언트 옵션의 전체 목록은 연결 옵션 가이드 를 참조하세요.
인증서 구성
TLS 요청을 성공적으로 시작하려면 애플리케이션에서 ID를 증명하는 암호화 인증서를 제시해야 합니다. MongoDB deployment에 연결할 때 TLS를 활성화하려면 애플리케이션의 인증서를 PEM(프라이버시 강화 메일) 파일로 저장해야 합니다. PEM 파일 형식은 암호화 인증서의 container 형식입니다.
중요
프로덕션 용도의 경우 MongoDB deployment에서 동일한 인증 기관에서 생성하고 서명한 유효한 인증서를 사용하는 것이 좋습니다. 테스트를 위해 배포에서 자체 서명된 인증서를 사용할 수 있습니다.
다음 목록에서는 TLS 사용 연결을 설정하기 위해 클라이언트가 제시해야 하는 구성 요소에 대해 설명합니다.
TLS 구성 요소 | 설명 |
---|---|
인증 기관(CA) | TLS 연결 시 신뢰할 수 있는 하나 이상의 인증 기관 |
클라이언트 인증서 | 서버가 암호화된 네트워크 연결을 설정하기 위해 애플리케이션의 ID를 확인할 수 있도록 하는 디지털 인증서 |
인증서 키 | 클라이언트 인증서 비공개 키 파일(종종 인증서 파일 자체에 포함됨) |
암호 구문 | 개인 클라이언트 키가 암호화된 경우 해독을 위한 비밀번호 |
클라이언트의 참조 인증서
클라이언트가 연결되기 전에 서버에서 인증서를 검증할 수 있도록 TlsOptions
구조체의 인증서를 참고해야 합니다.
먼저 인증서 파일 경로를 PathBuf
유형으로 변환해야 하므로 이 유형을 std::path
모듈에서 가져와야 합니다. 그런 다음 TlsOptions
구조체의 빌더 함수를 호출하여 ca_file_path
및 cert_key_file_path
필드를 인증서 파일 경로로 설정합니다.
TlsOptions
인스턴스 내에서 선택적 필드를 설정하여 연결에서 TLS를 구성할 수 있습니다. 테스트 목적으로 allow_invalid_certificates
및 allow_invalid_hostnames
필드를 설정할 수 있습니다.
allow_invalid_certificates
옵션을 true
로 설정하면 호스트 이름 확인이 비활성화되며, allow_invalid_hostnames
를 true
로 설정하면 인증서 유효성 검사가 비활성화됩니다.
경고
프로덕션 환경에서 이러한 옵션 중 하나를 지정하면 애플리케이션이 안전하지 않고 만료된 인증서 및 유효한 클라이언트 인스턴스로 가장하는 외부 프로세스에 잠재적으로 취약해집니다.
예시
이 예시에서는 다음 조치를 수행하여 TLS에 대해 구성된 TlsOptions
인스턴스와 Client
인스턴스를 생성합니다.
PathBuf
인스턴스에서 인증서 파일 경로를 참고 변수를 생성합니다.클라이언트 키를 해독하는 데 사용되는 비밀번호를 저장 변수를 생성합니다.
TlsOptions
구조체를 인스턴스화하고ca_file_path
,cert_key_file_path
및tls_certificate_key_file_password
필드를 설정하여 TLS 지원 연결을 구성합니다.TlsOptions
인스턴스를Tls
열거형의Enabled
변형에 전달합니다.ClientOptions
구조체의tls
필드를TlsOptions
인스턴스가 포함된Tls::Enabled
변형으로 설정합니다.이러한 옵션을 사용하여
Client
인스턴스를 만듭니다.
use std::path::PathBuf; use mongodb::{ options::{ ClientOptions, TlsOptions, Tls }, Client }; async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let mut client_options = ClientOptions::parse(uri).await?; let ca_file = PathBuf::from(r"<path to CA certificate>"); let key_file = PathBuf::from(r"<path to client certificate>"); let key_password = b"<password for client key>".to_vec(); let tls_opts = TlsOptions::builder() .ca_file_path(ca_file) .cert_key_file_path(key_file) .tls_certificate_key_file_password(key_password) .build(); client_options.tls = Some(Tls::Enabled(tls_opts)); let _client = Client::with_options(client_options)?; Ok(()) }
추가 정보
연결에서 TLS를 활성화하는 방법에 대해 자세히 알아보려면 다음 서버 매뉴얼 문서를 참조하세요.
API 문서
이 가이드에 언급된 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.