클라이언트가 TLS/SSL 연결을 요구하는 mongod 또는 mongos 인스턴스에 연결하려면 TLS/SSL을 지원해야 합니다.
참고
Linux 64비트 레거시 x64 바이너리인 MongoDB에는 TLS/SSL 지원이 포함되어 있지 않습니다.
MongoDB는 TLS 1.1 이상이 사용 가능한 시스템에서 TLS 1.0 암호화를 지원하지 않습니다.
중요
TLS/SSL, PKI(공개 키 인프라) 인증서 및 인증 기관에 대한 전체 설명은 이 문서의 범위를 벗어납니다. 이 페이지는 유효한 인증서에 액세스할 수 있을 뿐만 아니라 TLS/SSL에 대한 사전 지식이 있다고 가정합니다.
MongoDB Shell
mongosh 는 다음을 포함한 다양한 TLS/SSL 설정을 제공합니다.
TLS 옵션 | 참고 사항 |
|---|---|
TLS/SSL 연결을 활성화합니다. | |
| |
Windows 또는 macOS에서 실행하는 경우 시스템 인증서 저장소의 인증서를 이 옵션은
|
mongosh의 tls 옵션의 전체 목록은 TLS 옵션을 참조하세요.
TLS/SSL 연결의 경우, mongosh는 mongod 또는 mongos 인스턴스에서 제시하는 인증서의 유효성을 검사합니다.
mongosh는 인증서가 지정된 인증 기관(--tlsCAFile)에서 발급한 것인지 확인합니다. 지정된 CA에서 발급한 인증서가 아닌 경우mongosh는 연결에 실패합니다.mongosh는 호스트 이름(--host옵션 또는 연결 문자열에서 지정)이mongod또는mongos에서 제시하는 인증서의SAN(SAN이 없는 경우CN)과 일치하는지 확인합니다.SAN이 있으면mongosh는CN과 일치하지 않습니다. 호스트 이름이SAN(또는CN)과 일치하지 않으면mongosh의 연결은 실패합니다.MongoDB 4.2부터는 SAN 비교를 수행할 때 MongoDB에서 DNS 이름 또는 IP 주소 비교가 지원됩니다. 이전 버전에서는 MongoDB에서 DNS 이름 비교만 지원됐습니다.
mongosh를 TLS/SSL이 필요한mongod또는mongos에 연결하려면--host옵션을 지정하거나 연결 문자열을 사용하여 호스트 이름을 지정합니다. 다른 모든TLS/SSL옵션은 명령줄 옵션을 사용하여 지정해야 합니다.
암호화를 사용하여 MongoDB 인스턴스에 연결
암호화된 통신이 필요한 mongod 또는 mongos 인스턴스에 연결하려면, 다음을 사용하여 mongosh를 시작합니다.
--host및--tlsCAFile로 서버 인증서의 유효성을 검사합니다.
예를 들어, hostname.example.com에서 실행 중인 mongod 인스턴스에 다음 옵션이 있다고 가정해 보겠습니다.
mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem>
인스턴스에 연결하려면 다음 옵션을 사용하여 mongosh를 시작합니다.
mongosh --tls --host hostname.example.com --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
mongosh는 mongod 인스턴스에서 제시하는 인증서를 지정된 호스트 이름 및 CA 파일과 비교하여 검증합니다.
클라이언트 인증서가 필요한 MongoDB 인스턴스에 연결
CA 서명 클라이언트 인증서가 필요한 mongod 또는 mongos에 연결하려면, 다음을 사용하여 mongosh를 시작합니다.
--host및--tlsCAFile로 서버 인증서의 유효성을 검사합니다.--tlsCertificateKeyFile옵션을 사용하여 서버에 제시할 클라이언트 인증서를 지정합니다.
예를 들어, hostname.example.com에서 실행 중인 mongod 인스턴스에 다음 옵션이 있다고 가정해 보겠습니다.
mongod --tlsMode requireTLS --tlsCertificateKeyFile /etc/ssl/mongodb.pem --tlsCAFile /etc/ssl/caToValidateClientCertificates.pem
인스턴스에 연결하려면 다음 옵션을 사용하여 mongosh를 시작합니다.
mongosh --tls --host hostname.example.com --tlsCertificateKeyFile /etc/ssl/client.pem --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
Windows 및 macOS
시스템 인증서 저장소에서 클라이언트 인증서를 지정하려면 --tlsCertificateKeyFile 대신 --tlsCertificateSelector 옵션을 사용합니다.
CA 파일이 시스템 인증서 저장소에도 있는 경우 --tlsCAFile 옵션을 생략할 수 있습니다.
예를 들어, CN(일반 이름)이 myclient.example.net인 인증서 그리고 함께 제공되는 CA 파일이 모두 macOS 시스템 인증서 저장소에 있는 경우 다음과 같이 연결할 수 있습니다.
mongosh --tls --host hostname.example.com --tlsCertificateSelector subject="myclient.example.net"
이 옵션들은 mongosh에서 사용할 수 있지만, 대신 tls 대안을 사용해야 합니다.
--tlsAllowInvalidCertificates 옵션 사용 방지
경고
--tlsAllowInvalidCertificates 옵션은 사용할 수 있는 경우에도 가급적 사용하지 않는 것이 좋습니다. --tlsAllowInvalidCertificates를 사용해야만 하는 경우, 침입이 불가능한 시스템에서만 옵션을 사용하세요.
mongosh가 --tlsAllowInvalidCertificates 옵션과 함께 실행되는 경우, mongosh는 서버 인증서의 유효성 검사를 시도하지 않습니다. 이로 인해 만료된 mongod 및 mongos 인증서뿐만 아니라 유효한 mongod 또는 mongos 인스턴스로 가장하는 외부 프로세스에 대해서도 취약성이 발생합니다. TLS/SSL 인증서에서 호스트 이름 유효성 검사만 비활성화해야 하는 경우 --tlsAllowInvalidHostnames를 참조하세요.
MongoDB Atlas, MongoDB Cloud Manager 및 MongoDB Ops Manager
MongoDB Atlas는 데이터베이스에 대한 연결을 암호화하기 위해 TLS/SSL을 사용합니다.
MongoDB Cloud Manager 및 Ops Manager 모니터링 에이전트는 암호화된 통신을 사용하여 통계를 수집합니다. 에이전트가 이미 MongoDB Cloud Manager/Ops Manager 서버와의 통신을 암호화하고 있으므로, 호스트별로 MongoDB Cloud Manager/Ops Manager에서 TLS/SSL 지원을 사용하도록 설정하기만 하면 됩니다.
자세한 내용은 다음을 참조하세요.
MongoDB 드라이버
MongoDB 드라이버는 암호화된 통신을 지원합니다. 자세한 내용은 다음을 참조하세요.
MongoDB 도구.
다양한 MongoDB 유틸리티 프로그램이 암호화된 통신을 지원합니다. 이러한 도구에는 다음이 포함됩니다.
이러한 도구로 암호화된 통신을 사용하려면 mongosh와 동일한 tls 옵션을 사용하세요. MongoDB Shell을 참조하세요.