Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

TLS/SSL 에 대해 mongod 및 구성 mongos

이 페이지의 내용

  • 개요
  • 전제 조건
  • 인증 기관
  • mongodmongos 인증서 키 파일
  • 절차(net.tls 설정 사용)
  • TLS/SSL 인증서 및 키를 사용하여 mongodmongos 설정
  • 클라이언트 인증서 유효성 검사를 사용하여 mongodmongos 설정
  • 프로토콜 허용 안 함
  • TLS/SSL 인증서 암호
  • 온라인 인증서 회전
  • FIPS 모드에서 실행
  • 다음 단계
  • 절차(net.ssl 설정 사용)
  • TLS/SSL 인증서 및 키를 사용하여 mongodmongos 설정
  • 클라이언트 인증서 유효성 검사를 사용하여 mongodmongos 설정
  • 프로토콜 허용 안 함
  • TLS/SSL 인증서 암호
  • FIPS 모드에서 실행
  • 다음 단계

이 문서는 TLS/SSL을 지원하도록 새 MongoDB 인스턴스를 구성하도록 도와드립니다. 현재 TLS/SSL을 사용하지 않는 클러스터를 TLS/SSL을 사용하도록 업그레이드하는 방법에 대한 지침은 TLS/SSL을 사용하도록 클러스터 업그레이드를 참조하세요.

MongoDB는 네이티브 TLS/SSL OS 라이브러리를 사용합니다.

플랫폼
TLS/SSL 라이브러리
Windows
보안 채널(Schannel)
Linux/BSD
OpenSSL
macOS
보안 전송

참고

  • MongoDB는 TLS 1.1 이상이 사용 가능한 시스템에서 TLS 1.0 암호화를 지원하지 않습니다.

  • MongoDB의 TLS/SSL 암호화는 모든 연결에 대해 최소 128비트 키 길이의 강력한 TLS/SSL 암호만 사용할 수 있도록 허용합니다.

  • MongoDB의 Linux 64비트 레거시 x64 빌드에는 TLS/SSL 지원이 포함되어 있지 않습니다.

중요

TLS/SSL, PKI(공개 키 인프라) 인증서 및 인증 기관에 대한 전체 설명은 이 문서의 범위를 벗어납니다. 이 페이지는 유효한 인증서에 액세스할 수 있을 뿐만 아니라 TLS/SSL에 대한 사전 지식이 있다고 가정합니다.

프로덕션 용도의 경우 MongoDB deployment는 동일한 인증 기관에서 생성하고 서명한 유효한 인증서를 사용해야 합니다. 귀하 또는 귀하의 조직은 독립적인 인증 기관을 생성 및 유지 관리하거나 타사 TLS 공급업체에서 생성한 인증서를 사용할 수 있습니다. 인증서를 얻고 관리하는 것은 이 문서의 범위를 벗어납니다.

멤버 인증서를 사용하여 샤딩된 클러스터 또는 복제본 세트에 대한 멤버 자격을 확인합니다. 회원 인증서 파일 경로는 net.tls.clusterFilenet.tls.certificateKeyFile 옵션으로 구성됩니다. 멤버에게는 다음과 같은 구성 요구 사항이 있습니다.

  • 클러스터 멤버 구성은 인증에 사용되는 속성 중 하나 이상에 대해 비어 있지 않은 값을 지정해야 합니다. 기본적으로 MongoDB는 다음을 허용합니다.

    • 조직 (O)

    • 조직 단위 (OU)

    • 도메인 구성 요소 (DC)

    net.tls.clusterAuthX509.extensionValue를 설정하여 인증에 사용할 대체 속성을 지정할 수 있습니다.

  • 클러스터 멤버 구성에는 동일한 net.tls.clusterAuthX509.attributes이 포함되어야 하며 일치하는 값을 사용해야 합니다. 속성 순서는 중요하지 않습니다. 다음 예에서는 OOU 설정하지만 DC는 설정하지 않습니다.

    net:
    tls:
    clusterAuthX509:
    attributes: O=MongoDB, OU=MongoDB Server

참고

enforceUserClusterSeparation 매개변수를 비활성화하면 다음 동작이 적용됩니다.

  • 구성 파일에서 clusterAuthModekeyFile 인 경우 O/OU/DC 검사가 비활성화됩니다. 이를 통해 멤버 인증서를 보유한 클라이언트는 $external 데이터베이스에 저장된 사용자로 인증할 수 있습니다.

  • 구성 파일 에 clusterAuthMode 이(가) keyFile 이(가) 아닌 경우 서버 가 시작되지 않습니다.

enforceUserClusterSeparation 매개 변수를 false 로 설정하면 서버는 애플리케이션이 인증에 사용하는 클라이언트 인증서와 액세스 권한이 있는 클러스터 내 인증서를 구분하지 않습니다. clusterAuthModekeyFile 인 경우에는 효과가 없습니다. 그러나 clusterAuthMode 이(가) x509 인 경우 허용된 체계를 사용하는 사용자 인증서는 클러스터 인증서와 병합되어 권한 있는 액세스 권한이 부여됩니다.

다음을 수행하면 기존 인증서에 내부 권한이 부여됩니다.

  1. 이 매개변수에서 허용하는 이름으로 사용자를 생성합니다.

  2. enforceUserClusterSeparation 매개 변수를 false 로 설정합니다.

  3. clusterAuthModex509로 설정합니다.

enforceUserClusterSeparation 플래그에서 생성할 수 있는 상승된 권한을 가진 사용자를 제거했는지 확인하지 않고는 keyFile 에서 x509 으)로 업그레이드해서는 안 됩니다.

enforceUserClusterSeparation 매개변수를 false 로 설정하려면 시작 중에 다음 명령을 실행합니다.

mongod --setParameter enforceUserClusterSeparation=false

인증서에는 다음과 같은 요구 사항이 있습니다.

  • 단일 인증 기관 (CA)은 샤딩된 클러스터 또는 복제본 세트의 멤버에 대해 모든 x.509 인증서를 발급해야 합니다.

  • Subject Alternative Name (SAN) 항목 중 하나 이상은 다른 클러스터 멤버가 사용하는 서버 호스트 이름과 일치해야 합니다. SAN을 비교할 때 MongoDB는 DNS 이름 또는 IP 주소 중 하나를 비교할 수 있습니다.

    subjectAltName 을 지정하지 않으면 MongoDB는 대신 CN(일반 이름)을 비교합니다. 그러나 이러한 CN 사용은 RFC 에 따라 더 이상 사용되지 않습니다.2818

  • certificateKeyFile로 사용되는 인증서에 extendedKeyUsage이 포함되어 있는 경우 clientAuth ("TLS 웹 클라이언트 인증")와 serverAuth ("TLS 웹 서버 인증")을 모두 포함해야 합니다.

    extendedKeyUsage = clientAuth, serverAuth
  • clusterFile로 사용된 인증서에 extendedKeyUsage가 포함되어 있다면, 그 값은 반드시 clientAuth를 포함해야 합니다.

    extendedKeyUsage = clientAuth

TLS/SSL 연결을 설정할 때 mongod / mongos는 신원을 확인하기 위해 클라이언트에게 인증서 키 파일을 제시합니다. [1] 인증서 키 파일에는 공개 키 인증서와 연결된 개인 키가 포함되어 있지만 클라이언트에게는 공개 구성 요소만 공개됩니다.

MongoDB는 인증 기관에서 발급한 유효한 TLS/SSL 인증서 또는 자체 서명된 인증서를 사용할 수 있습니다. 자체 서명된 인증서를 사용하는 경우, 통신 채널이 암호화되어 연결 도청을 방지할 수 있지만 서버 신원 유효성 검사는 이루어지지 않습니다. 이로 인해 메시지 가로채기 공격에 취약해집니다. 신뢰할 수 있는 인증 기관에서 서명한 인증서를 사용하면 MongoDB 드라이버가 서버의 신원을 확인하도록 허용할 수 있습니다.

일반적으로 네트워크를 신뢰할 수 있는 경우가 아니라면 자체 서명된 인증서를 사용하지 마세요.

복제본 세트 및 샤딩된 클러스터 멤버에 대한 인증서의 경우, 서로 다른 서버에서는 서로 다른 인증서를 사용하는 것이 좋습니다. 이렇게 하면 개인 키의 노출을 최소화하고 호스트 이름 유효성 검사를 수행할 수 있습니다.

참고

MongoDB deployment가 CA 파일을 사용하도록 구성되지 않았다면, MongoDB deployment는 클라이언트 인증서 유효성 검사를 우회합니다.

[1] FIPS 모드의 경우, 인증서가 FIPS를 준수하는지(즉, FIPS 준수 알고리즘을 사용하는지) 그리고 개인 키가 PKCS#8 표준을 충족하는지 확인합니다. 개인 키를 PKCS #8 형식으로 변환해야 하는 경우 openssl pkcs8 등과 같은 다양한 변환 도구를 사용할 수 있습니다.

참고

MongoDB는 net.ssl 설정(및 --ssl 명령줄 옵션)에 대응하는 net.tls 설정(및 --tls 명령줄 옵션)을 제공합니다. MongoDB는 항상 TLS 1.0 이상을 지원해 왔기 때문에 새로운 tls 설정은 ssl 설정과 동일한 기능을 제공합니다.

이 섹션의 절차에서는 net.tls 설정을 사용합니다. 별칭 net.ssl을 사용하는 절차에 대한 자세한 내용은 절차(net.ssl 설정 사용)을 참조하세요.

다음 섹션에서는 mongod / mongos가 TLS/SSL 연결을 사용하도록 구성합니다. 이러한 TLS/SSL 설정을 통해 mongod / mongos가 인증서 키 파일을 클라이언트에 제시합니다. 그러나 mongod / mongos는 클라이언트의 신원을 확인하기 위해 클라이언트의 인증서 키 파일이 필요하지 않습니다. 클라이언트의 인증서 키 파일을 요구하려면 클라이언트 인증서 유효성 검사를 통한 mongodmongos 설정을 참조하세요.

참고

이 절차는 net.tls 설정을 사용합니다. net.ssl 설정을 사용하는 절차에 대한 자세한 내용은 절차(net.ssl 설정 사용)를 참조하세요.

TLS/SSL 연결을 사용하려면 / mongos 인스턴스의 mongod 구성 파일에 다음 TLS/SSL 설정을 포함합니다.

설정
참고 사항

requireTLS로 설정합니다.

이 설정은 각 서버가 TLS/SSL 암호화 연결만 사용하도록 제한합니다. 또한 allowTLS 또는 preferTLS 값을 지정하여 포트에서 TLS/SSL 모드를 혼합하여 사용하도록 설정할 수 있습니다. 자세한 내용은 net.tls.mode를 참조하세요.

TLS/SSL 인증서와 키가 포함된 파일의 경로로 설정합니다.

mongod / mongos 인스턴스는 이 파일을 클라이언트에 제공하여 인스턴스의 ID를 설정합니다.

예를 들어 mongod 인스턴스에 대한 다음 구성 파일을 보세요.

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Windows와 macOS에서 시스템 SSL 인증서 저장소를 사용할 수 있습니다. 시스템 SSL 인증서 저장소를 사용하려면 인증서 키 파일을 지정하는 대신 net.tls.certificateSelector를 지정합니다.

설정
참고 사항

requireTLS로 설정합니다.

이 설정은 각 서버가 TLS/SSL 암호화 연결만 사용하도록 제한합니다. 또한 allowTLS 또는 preferTLS 값을 지정하여 포트에서 TLS/SSL 모드를 혼합하여 사용하도록 설정할 수 있습니다. 자세한 내용은 net.tls.mode를 참조하세요.

속성과 값을 설정합니다. (예: subject 또는 thumbprint)

이 설정은 인증서를 선택하는 데 사용됩니다. 자세한 내용은 net.tls.certificateSelector를 참조하세요.

예를 들어 mongod 인스턴스에 대한 다음 구성 파일을 보세요.

net:
tls:
mode: requireTLS
certificateSelector: subject="<CertificateCommonName>"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

위 구성을 사용하는 mongod 인스턴스는 TLS/SSL 연결만 허용할 수 있습니다.

mongod --config <path/to/configuration/file>

TLS/SSL을 사용한 연결에 대한 자세한 내용은 암호화를 사용하여 MongoDB 인스턴스에 연결을 참조하세요.

다음도 참조하세요.

구성 파일 대신 명령줄 옵션을 사용하여 mongodmongos 구성할 수도 있습니다.

다음 섹션에서는 TLS/SSL 연결을 사용하고 클라이언트 인증서 유효성 검사를 수행하도록 mongod / mongos를 구성합니다. 이 TLS/SSL 설정을 구성하면 다음과 같은 결과가 발생합니다.

  • mongod / mongos는 확인을 위해 클라이언트에게 인증서 키 파일을 제공합니다.

  • mongod / mongos는 클라이언트의 신원을 확인하기 위해 클라이언트의 인증서 키 파일이 필요합니다.

참고

이 절차는 net.tls 설정을 사용합니다. net.ssl 설정을 사용하는 절차에 대한 자세한 내용은 절차(net.ssl 설정 사용)를 참조하세요.

TLS/SSL 연결을 사용하고 클라이언트 인증서 유효성 검사를 수행하려면 / mongos 인스턴스의 mongod 구성 파일에 다음 TLS/SSL 설정을 포함합니다.

참고

Windows와 macOS에서 시스템 SSL 인증서 저장소를 사용할 수 있습니다. 시스템 SSL 인증서 저장소를 사용하려면 인증서 키 파일을 지정하는 대신 net.ssl.certificateSelector를 지정합니다.

설정
참고 사항

requireTLS로 설정합니다.

이 설정은 각 서버가 TLS/SSL 암호화 연결만 사용하도록 제한합니다. 또한 allowTLS 또는 preferTLS 값을 지정하여 포트에서 TLS/SSL 모드를 혼합하여 사용하도록 설정할 수 있습니다. 자세한 내용은 net.tls.mode를 참조하세요.

TLS/SSL 인증서와 키가 포함된 파일의 경로로 설정합니다.

mongod / mongos 인스턴스는 이 파일을 클라이언트에 제공하여 인스턴스의 ID를 설정합니다.

클라이언트 인증서 확인을 위한 인증서 체인이 포함된 파일의 경로로 설정합니다.

mongod / mongos 인스턴스는 이 파일을 사용하여 클라이언트가 제시한 인증서를 확인합니다. 인증서 체인에는 루트 인증 기관의 인증서가 포함됩니다.

중요

TLS/SSL이 활성화mongod 인스턴스를 시작할 때 --tlsCAFile 플래그, net.tls.CAFile 구성 옵션 또는 tlsUseSystemCA 매개 변수의 값을 지정해야 합니다.

--tlsCAFile, tls.CAFile, tlsUseSystemCA는 모두 상호 배타적입니다.

예를 들어 mongod 인스턴스에 대한 다음 구성 파일을 보세요.

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

위 구성을 사용하는 mongod 인스턴스는 TLS/SSL 연결만 허용할 수 있으며 클라이언트의 유효한 인증서가 필요합니다.

mongod --config <path/to/configuration/file>

클라이언트는 TLS/SSL 연결을 지정하고 인증서 키 파일을 인스턴스에 제공해야 합니다. TLS/SSL 연결에 대한 자세한 내용은 클라이언트 인증서가 필요한 MongoDB 인스턴스에 연결을 참조하세요.

다음도 참조하세요.

구성 파일 대신 명령줄 옵션을 사용하여 mongodmongos 구성할 수도 있습니다.

참고

이 절차는 net.tls 설정을 사용합니다. net.ssl 설정을 사용하는 절차에 대한 자세한 내용은 절차(net.ssl 설정 사용)를 참조하세요.

해지된 인증서가 있는 클라이언트가 mongod 또는 mongos 인스턴스에 연결하지 못하도록 하려면 인증서 해지 목록(CRL)을 사용할 수 있습니다.

CRL 파일을 지정하려면 해지된 인증서가 포함된 파일에 설정된 net.tls.CRLFile 를 포함합니다.

예를 들면 다음과 같습니다.

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
CRLFile: /etc/ssl/revokedCertificates.pem

/etc/ssl/revokedCertificates.pem 파일에 나열된 인증서를 제시하는 클라이언트는 연결할 수 없습니다.

다음도 참조하세요.

명령줄 옵션을 사용하여 해지된 인증서 목록을 구성할 수도 있습니다.

대부분의 경우 고객이 유효한 인증서를 제시하는지 확인하는 것이 중요합니다. 그러나 클라이언트가 인증서를 제공할 수 없거나 인증서 사용으로 전환 중인 경우, 인증서를 제공하는 클라이언트의 인증서만 유효성을 검사하고자 할 수 있습니다.

참고

이 절차는 net.tls 설정을 사용합니다. net.ssl 설정을 사용하는 절차에 대한 자세한 내용은 절차(net.ssl 설정 사용)를 참조하세요.

인증서를 제시하지 않는 클라이언트에 대해 클라이언트 인증서 유효성 검사를 무시하려면 net.tls.allowConnectionsWithoutCertificatestrue로 설정합니다.

예를 들면 다음과 같습니다.

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
allowConnectionsWithoutCertificates: true

이러한 설정으로 실행되는 mongod / mongos는 다음으로부터의 연결을 허용합니다.

  • 인증서를 제시하지 않는 고객.

  • 유효한 인증서를 제시하는 고객.

참고

클라이언트가 인증서를 제시하는 경우, 인증서는 유효한 인증서여야 합니다.

인증서를 제시하지 않은 연결을 포함한 모든 연결은 TLS/SSL을 사용하여 암호화됩니다.

클라이언트를 위한 TLS/SSL 연결에 대한 자세한 내용은 클라이언트를 위한 TLS/SSL 구성을 참조하세요.

다음도 참조하세요.

명령줄 옵션을 사용하여 구성할 수도 있습니다.

참고

이 절차는 net.tls 설정을 사용합니다. net.ssl 설정을 사용하는 절차에 대한 자세한 내용은 절차(net.ssl 설정 사용)를 참조하세요.

MongoDB Server가 특정 프로토콜을 사용하는 수신 연결을 수락하지 못하도록 하려면 허용되지 않는 프로토콜에 net.tls.disabledProtocols 세트를 포함시키세요.

예를 들어, 다음 구성은 mongod / mongosTLS1_0 또는 TLS1_1을 사용하는 수신 연결을 수락하지 못하도록 방지합니다.

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
disabledProtocols: TLS1_0,TLS1_1

다음도 참조하세요.

명령줄 옵션을 사용하여 구성할 수도 있습니다.

mongod / mongos 인증서 키 파일이 암호화된 경우 암호에 net.tls.certificateKeyFilePassword 설정을 포함합니다.

일반 텍스트에서 암호 구문을 지정하지 않으려면 구성 파일에 확장 값을 사용할 수 있습니다.

다음도 참조하세요.

명령줄 옵션을 사용하여 구성할 수도 있습니다.

MongoDB 5.0부터 필요에 따라 다음 인증서 키 파일을 회전할 수 있습니다.

이러한 인증서 중 하나 이상을 회전하려면 다음을 수행하세요.

  1. 다음 제약 조건에 유의하여 파일 시스템에서 회전하려는 인증서를 교체하세요.

    • 새로운 각 인증서는 교체하는 인증서와 동일한 파일 이름파일 경로를 가지고 있어야 합니다.

    • 암호화된 TLS Certificate를 회전하는 경우, 새 인증서의 암호는 이전 인증서의 암호( certificateKeyFilePassword 구성 파일 설정에 지정된 대로)와 같아야 합니다. 인증서 회전은 대화형 비밀번호 프롬프트를 지원하지 않습니다.

  2. 인증서 로테이션을 수행하려는 mongod 또는 mongos 인스턴스에 mongosh를 연결합니다.

  3. rotateCertificates 명령 또는 db.rotateCertificates() 셸 메서드를 실행하여 mongod 또는 mongos 인스턴스에서 사용하는 인증서를 회전합니다.

인증서 회전이 발생하는 경우:

  • mongod 또는 mongos 인스턴스에 대한 기존 연결은 종료되지 않으며 이전 인증서를 계속 사용합니다.

  • 모든 새 연결은 새 인증서를 사용합니다.

인증서 파일이 잘못되었거나, 만료되었거나, 해지되었거나, 누락된 경우 인증서 회전이 실패하지만 기존 TLS 구성이 무효화되거나 실행 중인 mongod 또는 mongos 프로세스가 종료되지는 않습니다.

MongoDB 5.0 이전에는 인증서 회전 시에 다운타임이 발생했으며 일반적으로 유지 관리 기간 동안 수행되었습니다.

추가 고려 사항 및 전체 사용 지침은 rotateCertificates 또는 db.rotateCertificates()를 참조하세요.

참고

FIPS와 호환되는 TLS/SSL은 MongoDB Enterprise에서만 사용할 수 있습니다. 자세한 내용은 FIPS용 MongoDB 구성을 참조하세요.

자세한 내용은 FIPS를 위한 MongoDB 구성을 참조하세요.

클라이언트를 위한 TLS/SSL 지원을 구성하려면 클라이언트용 TLS/SSL 구성을 참조하세요.

참고

MongoDB는 net.ssl 설정(및 --ssl 명령줄 옵션)에 대응하는 net.tls 설정(및 --tls 명령줄 옵션)을 제공합니다. MongoDB는 항상 TLS 1.0 이상을 지원해 왔기 때문에 새로운 tls 설정은 ssl 설정과 동일한 기능을 제공합니다.

이 섹션의 절차에서는 net.ssl 설정을 사용합니다. net.tls 별칭을 사용하는 절차에 대한 자세한 내용은 절차(net.tls 설정 사용)를 참조하세요.

다음 섹션에서는 mongod / mongos가 TLS/SSL 연결을 사용하도록 구성합니다. 이러한 TLS/SSL 설정을 통해 mongod / mongos가 인증서 키 파일을 클라이언트에 제시합니다. 그러나 mongod / mongos는 클라이언트의 신원을 확인하기 위해 클라이언트의 인증서 키 파일이 필요하지 않습니다. 클라이언트의 인증서 키 파일을 요구하려면 클라이언트 인증서 유효성 검사를 통한 mongodmongos 설정을 참조하세요.

TLS/SSL 연결을 사용하려면 mongod / mongos 인스턴스의 구성 파일에 다음 TLS/SSL 설정을 포함합니다.

설정
참고 사항
net.ssl.mode

requireSSL로 설정합니다.

이 설정은 각 서버가 TLS/SSL 암호화 연결만 사용하도록 제한합니다. allowSSL 또는 preferSSL이 혼합 TLS/SSL 모드를 사용하도록 지정할 수도 있습니다. 자세한 내용은 net.ssl.mode를 참조합니다.

net.ssl.PEMKeyFile

TLS/SSL 인증서와 키가 포함되어 있는 .pem 파일을 지정합니다.

mongod / mongos 인스턴스는 이 파일을 클라이언트에 제공하여 인스턴스의 ID를 설정합니다.

키가 암호화된 경우 암호 구문(net.ssl.PEMKeyPassword)을 지정합니다.

예를 들어 mongod 인스턴스에 대한 다음 구성 파일을 보세요.

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Windows와 macOS에서 시스템 SSL 인증서 저장소를 사용할 수 있습니다. 시스템 SSL 인증서 저장소를 사용하려면 인증서 키 파일을 지정하는 대신 net.ssl.certificateSelector를 지정합니다.

설정
참고 사항
net.ssl.mode

requireSSL로 설정합니다.

이 설정은 각 서버가 TLS/SSL 암호화 연결만 사용하도록 제한합니다. allowSSL 또는 preferSSL이 혼합 TLS/SSL 모드를 사용하도록 지정할 수도 있습니다. 자세한 내용은 net.ssl.mode를 참조합니다.

net.ssl.certificateSelector

속성과 값을 설정합니다. (예: subject 또는 thumbprint)

이 설정은 인증서를 선택하는 데 사용됩니다. 자세한 내용은 net.ssl.certificateSelector를 참조하세요.

예를 들어 mongod 인스턴스에 대한 다음 구성 파일을 보세요.

net:
ssl:
mode: requireSSL
certificateSelector: subject="<CertificateCommonName>"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

위 구성을 사용하는 mongod 인스턴스는 TLS/SSL 연결만 허용할 수 있습니다.

mongod --config <path/to/configuration/file>

TLS/SSL을 사용한 연결에 대한 자세한 내용은 암호화를 사용하여 MongoDB 인스턴스에 연결을 참조하세요.

다음도 참조하세요.

구성 파일 대신 명령줄 옵션을 사용하여 mongodmongos 구성할 수도 있습니다.

  • mongod에 대한 자세한 내용은 --sslMode, --sslPEMKeyFile--sslCertificateSelector를 참조하세요.

  • mongos의 경우 --sslMode, --sslPEMKeyFile--sslCertificateSelector 참조하세요.

다음 섹션에서는 TLS/SSL 연결을 사용하고 클라이언트 인증서 유효성 검사를 수행하도록 mongod / mongos를 구성합니다. 이 TLS/SSL 설정을 구성하면 다음과 같은 결과가 발생합니다.

  • mongod / mongos는 확인을 위해 클라이언트에게 인증서 키 파일을 제공합니다.

  • mongod / mongos는 클라이언트의 신원을 확인하기 위해 클라이언트의 인증서 키 파일이 필요합니다.

TLS/SSL 연결을 사용하려면 mongod / mongos 인스턴스의 구성 파일에 다음 TLS/SSL 설정을 포함합니다.

참고

Windows와 macOS에서 시스템 SSL 인증서 저장소를 사용할 수 있습니다. 시스템 SSL 인증서 저장소를 사용하려면 인증서 키 파일을 지정하는 대신 net.ssl.certificateSelector를 지정합니다.

설정
참고 사항
net.ssl.mode

requireSSL로 설정합니다.

이 설정은 각 서버가 TLS/SSL 암호화 연결만 사용하도록 제한합니다. allowSSL 또는 preferSSL이 혼합 TLS/SSL 모드를 사용하도록 지정할 수도 있습니다. 자세한 내용은 net.ssl.mode를 참조합니다.

net.ssl.PEMKeyFile

TLS/SSL 인증서와 키가 포함되어 있는 .pem 파일을 지정합니다.

mongod / mongos 인스턴스는 이 파일을 클라이언트에 제공하여 인스턴스의 ID를 설정합니다.

키가 암호화된 경우 암호 구문(net.ssl.PEMKeyPassword)을 지정합니다.

net.ssl.CAFile

클라이언트 인증서 확인을 위한 인증서 체인이 포함된 파일의 경로로 설정합니다.

mongod / mongos 인스턴스는 이 파일을 사용하여 클라이언트가 제시한 인증서를 확인합니다. 인증서 체인에는 루트 인증 기관의 인증서가 포함됩니다.

예를 들어 mongod 인스턴스에 대한 다음 구성 파일을 보세요.

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

위 구성을 사용하는 mongod 인스턴스는 TLS/SSL 연결만 허용할 수 있으며 클라이언트의 유효한 인증서가 필요합니다.

mongod --config <path/to/configuration/file>

클라이언트는 TLS/SSL 연결을 지정하고 인증서 키 파일을 인스턴스에 제공해야 합니다. TLS/SSL 연결에 대한 자세한 내용은 클라이언트 인증서가 필요한 MongoDB 인스턴스에 연결을 참조하세요.

다음도 참조하세요.

구성 파일 대신 명령줄 옵션을 사용하여 mongodmongos 구성할 수도 있습니다.

  • mongod에 대한 자세한 내용은 --sslMode, --sslPEMKeyFile--sslCAFile를 참조하세요.

  • mongos에 대한 자세한 내용은 --sslMode, --sslPEMKeyFile--sslCAFile를 참조하세요.

해지된 인증서가 있는 클라이언트가 mongod 또는 mongos 인스턴스에 연결하지 못하도록 하려면 인증서 해지 목록(CRL)을 사용할 수 있습니다.

CRL 파일을 지정하려면 해지된 인증서가 포함된 파일에 net.ssl.CRLFile을 포함합니다.

예를 들면 다음과 같습니다.

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
CRLFile: /etc/ssl/revokedCertificates.pem

/etc/ssl/revokedCertificates.pem 파일에 나열된 인증서를 제시하는 클라이언트는 연결할 수 없습니다.

다음도 참조하세요.

명령줄 옵션을 사용하여 해지된 인증서 목록을 구성할 수도 있습니다.

  • mongod의 경우 --sslCRLFile을 참조하세요.

  • mongos의 경우 --sslCRLFile을 참조하세요.

대부분의 경우 고객이 유효한 인증서를 제시하는지 확인하는 것이 중요합니다. 그러나 클라이언트가 인증서를 제공할 수 없거나 인증서 사용으로 전환 중인 경우, 인증서를 제공하는 클라이언트의 인증서만 유효성을 검사하고자 할 수 있습니다.

인증서를 제시하지 않는 클라이언트에 대해 클라이언트 인증서 유효성 검사를 무시하려면 true로 설정된 net.ssl.allowConnectionsWithoutCertificates를 포함합니다.

예를 들면 다음과 같습니다.

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
allowConnectionsWithoutCertificates: true

이러한 설정으로 실행되는 mongod / mongos는 다음으로부터의 연결을 허용합니다.

  • 인증서를 제시하지 않는 고객.

  • 유효한 인증서를 제시하는 고객.

참고

클라이언트가 인증서를 제시하는 경우, 인증서는 유효한 인증서여야 합니다.

인증서를 제시하지 않은 연결을 포함한 모든 연결은 TLS/SSL을 사용하여 암호화됩니다.

클라이언트를 위한 TLS/SSL 연결에 대한 자세한 내용은 클라이언트를 위한 TLS/SSL 구성을 참조하세요.

다음도 참조하세요.

명령줄 옵션을 사용하여 구성할 수도 있습니다.

  • mongod의 경우 --sslAllowConnectionsWithoutCertificates을 참조하세요.

  • mongos의 경우 --sslAllowConnectionsWithoutCertificates을 참조하세요.

MongoDB 서버가 특정 프로토콜을 사용하는 수신 연결을 수락하지 못하도록 하려면 허용되지 않는 프로토콜에 net.ssl.disabledProtocols 세트를 포함시키세요.

예를 들어, 다음 구성은 mongod / mongosTLS1_0 또는 TLS1_1을 사용하는 수신 연결을 수락하지 못하도록 방지합니다.

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
disabledProtocols: TLS1_0,TLS1_1

다음도 참조하세요.

명령줄 옵션을 사용하여 구성할 수도 있습니다.

  • mongod의 경우 --sslDisabledProtocols을 참조하세요.

  • mongos의 경우 --sslDisabledProtocols을 참조하세요.

mongod / mongos 인증서 키 파일이 암호화된 경우 암호에 net.ssl.PEMKeyPassword 설정을 포함합니다.

다음도 참조하세요.

명령줄 옵션을 사용하여 구성할 수도 있습니다.

  • mongod의 경우 sslPEMKeyPassword을 참조하세요.

  • mongos의 경우 --sslPEMKeyPassword을 참조하세요.

참고

FIPS와 호환되는 TLS/SSL은 MongoDB Enterprise에서만 사용할 수 있습니다. 자세한 내용은 FIPS용 MongoDB 구성을 참조하세요.

자세한 내용은 FIPS를 위한 MongoDB 구성을 참조하세요.

클라이언트를 위한 TLS/SSL 지원을 구성하려면 클라이언트용 TLS/SSL 구성을 참조하세요.

돌아가기

TLS/SSL