클라이언트를 위한 TLS/SSL 구성
이 페이지의 내용
클라이언트가 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 연결을 활성화합니다. | |
mongosh 의 인증서 키 파일이 암호화된 경우. | |
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을 참조하세요.