문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

키 파일 인증에서 x.509 인증으로 업그레이드

이 페이지의 내용

  • 업그레이드 절차( tls 옵션 사용)
  • 업그레이드 절차( ssl 옵션 사용)

현재 키파일 인증 을 사용 중인 cluster를 x.509 인증으로 업그레이드하려면 다음 롤링 업그레이드 프로세스를 사용하세요.

참고

MongoDB가 TLS 1 지원을 비활성화합니다. TLS가 1 인 시스템에서 0 암호화.1+를 사용할 수 있습니다.

참고

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

이 섹션의 절차에서는 tls 설정/옵션을 사용합니다. ssl 설정/옵션을 사용하는 절차에 대해서는 업그레이드 절차( ssl 옵션 사용)를 참조하세요.

참고

이 절차에서는 tls 설정/옵션을 사용합니다. ssl 설정/옵션을 사용하는 절차에 대해서는 현재 TLS/SSL을 사용하는 클러스터( ssl 옵션 사용)를 참조하세요.

TLS/SSL 및 키 파일 인증을 사용하는 cluster의 경우 x.509 cluster 인증으로 업그레이드하려면 다음 롤링 업그레이드 프로세스를 사용하세요.

  1. cluster의 각 노드에 대해 구성 파일 에 다음 설정을 추가하고 다시 시작합니다.

    • security.clusterAuthMode
      sendKeyFile 로 설정합니다. 이 설정 값을 사용하면 각 노드는 계속해서 키 파일을 전송하여 자신을 구성원으로 인증합니다. 그러나 각 노드는 다른 노드로부터 키 파일 또는 x.509 인증서를 수신하여 해당 노드를 인증할 수 있습니다.
    • net.tls.clusterFile
      멤버십 인증을 위해 노드 인증서 키 파일의 적절한 경로로 설정합니다. mongod / mongos 는 cluster의 다른 구성원에게 이 파일을 표시하여 자신을 구성원으로 식별합니다.

    특정 구성에 적합한 다른 TLS/SSL 옵션 및 기타 옵션을 포함합니다.

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

    net:
    tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb.pem
    CAFile: /etc/ssl/caToValidateReceivedCertificates.pem
    clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem"
    security:
    clusterAuthMode: sendKeyFile
    keyFile: /my/securely/located/membershipkey
    replication:
    replSetName: myReplicaSet
    net:
    bindIp: localhost,mongodb0.example.net
    port: 27017
    systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
    storage:
    dbPath: "/var/lib/mongodb"
    processManagement:
    fork: true

    계속하기 전에 security.clusterAuthModenet.tls.clusterFile 설정을 포함하도록 cluster의 모든 노드를 업데이트합니다.

  2. 각 노드에 연결하고 setParameter 명령을 사용하여 clusterAuthModesendX509 로 업데이트합니다. [1]

    db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )

    sendX509 을 사용하면 각 노드는 net.tls.clusterFile 를 전송하여 자신을 구성원으로 인증합니다. 그러나 각 노드는 다른 노드로부터 키 파일 또는 x.509 인증서를 수신하여 해당 노드를 인증할 수 있습니다.

    계속하기 전에 cluster의 모든 노드를 이 설정으로 업그레이드하세요.

  3. 선택 사항이지만 권장됩니다. 마지막으로 cluster의 각 노드에 대해 노드에 연결하고 setParameter 명령을 사용하여 인증에 x.509 인증서만 사용하도록 clusterAuthModex509 로 업데이트합니다. [1]

    db.adminCommand( { setParameter: 1, clusterAuthMode: "x509" } )
  4. 모든 노드를 업그레이드한 후 적절한 x.509 설정으로 구성 파일 을 편집하여 나중에 다시 시작할 때 cluster가 x.509 인증을 사용하도록 합니다. 예를 들면 다음과 같습니다.

    net:
    tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb.pem
    CAFile: /etc/ssl/caToValidateReceivedCertificates.pem
    clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem"
    security.clusterAuthMode: x509
    replication:
    replSetName: myReplicaSet
    net:
    bindIp: localhost,mongodb0.example.net
    port: 27017
    systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
    storage:
    dbPath: "/var/lib/mongodb"
    processManagement:
    fork: true

다음도 참조하세요.

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

참고

이 절차에서는 tls 옵션을 사용합니다. ssl 설정/옵션을 사용하는 절차에 대해서는 현재 TLS/SSL을 사용하지 않는 클러스터( ssl 옵션 사용)를 참조하세요.

TLS/SSL이 아닌 키 파일 인증을 사용하는 cluster의 경우, x.509 멤버십 인증 및 TLS/SSL 연결로 업그레이드하세요:

  1. cluster의 각 노드에 대해 구성 파일 에 다음 설정을 추가하고 다시 시작합니다.

    • net.tls.mode
      allowTLS 로 설정합니다. 이 값을 사용하면 노드가 TLS/SSL과 비TLS/비SSL 수신 연결을 모두 수락할 수 있습니다. 발신 연결이 TLS/SSL을 사용하지 않습니다.
    • net.tls.certificateKeyFile
      TLS/SSL 인증서 및 키가 포함된 파일의 경로로 설정합니다. mongod / mongos 는 인스턴스의 ID를 설정하기 위해 이 파일을 클라이언트에 제공합니다. TLS/SSL을 사용할 때 필요합니다.
    • net.tls.clusterFile
      멤버십 인증을 위해 노드 인증서 키 파일의 적절한 경로로 설정합니다. mongod / mongos 는 cluster의 다른 구성원에게 이 파일을 표시하여 자신을 구성원으로 식별합니다.
    • net.tls.CAFile
      수신한 인증서를 확인하기 위한 인증서 체인이 포함된 파일의 경로로 설정합니다.
    • security.clusterAuthMode
      sendKeyFile 로 설정합니다. 이를 통해 각 노드는 자신을 구성원으로 인증하기 위해 계속해서 키 파일을 보낼 수 있습니다. 그러나 각 노드는 다른 노드로부터 키 파일 또는 x.509 인증서를 수신하여 해당 노드를 인증할 수 있습니다.

    특정 구성에 적합한 다른 TLS/SSL 옵션 및 기타 옵션을 포함합니다.

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

    net:
    tls:
    mode: allowTLS
    certificateKeyFile: /etc/ssl/mongodb.pem
    clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem"
    CAFile: /etc/ssl/caToValidateReceivedCertificates.pem
    security:
    clusterAuthMode: sendKeyFile
    keyFile: /my/securely/located/membershipkey
    replication:
    replSetName: myReplicaSet
    net:
    bindIp: localhost,mongodb0.example.net
    port: 27017
    systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
    storage:
    dbPath: "/var/lib/mongodb"
    processManagement:
    fork: true

    net.tls.mode, net.tls.certificateKeyFile, net.tls.clusterFilesecurity.clusterAuthMode 를 포함하도록 cluster의 모든 노드를 업그레이드합니다.

  2. 각 노드에 연결하고 setParameter 명령 [1] 을 사용하여 다음을 수행합니다.

    1. tlsModepreferSSL 로 업데이트합니다. tlsModepreferTLS 로 설정하면 노드는 TLS/SSL과 비 TLS/비SSL 수신 연결을 모두 허용하고 발신 연결은 TLS/SSL을 사용합니다.

    2. clusterAuthModesendX509 로 업데이트합니다. clusterAuthModesendX509 로 설정하면 각 노드는 net.tls.clusterFile 를 전송하여 자신을 구성원으로 인증합니다. 그러나 각 노드는 해당 노드를 인증하기 위해 다른 노드의 키 파일 또는 x.509 인증서를 계속 수락합니다.

    db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } );
    db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } );

    계속하기 전에 cluster의 모든 노드를 이 설정으로 업그레이드하세요.

  3. 모든 노드를 업그레이드한 후 적절한 TLS/SSL 및 x.509 설정으로 구성 파일 을 편집하여 나중에 다시 시작할 때 cluster가 x.509 인증을 사용하도록 합니다.

    net:
    tls:
    mode: preferTLS
    certificateKeyFile: /etc/ssl/mongodb.pem
    clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem"
    CAFile: /etc/ssl/caToValidateReceivedCertificates.pem
    security:
    clusterAuthMode: sendX509
    replication:
    replSetName: myReplicaSet
    net:
    bindIp: localhost,mongodb0.example.net
    port: 27017
    systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
    storage:
    dbPath: "/var/lib/mongodb"
    processManagement:
    fork: true

    참고

    이때,

    • cluster의 노드가 TLS/SSL 연결을 사용합니다. 그러나 노드는 클라이언트 애플리케이션에서 비TLS/SSL 연결을 허용할 수 있습니다.

    • 노드는 멤버십 인증을 위해 x.509 인증서를 전송하지만, 다른 노드의 멤버십을 확인하기 위해 다른 노드의 x.509 인증서 또는 키 파일을 수락할 수 있습니다.

    클라이언트 애플리케이션에서 TLS/SSL 연결을 시행하고 멤버십 인증에 x.509만 허용하려면 다음 단계를 참조하세요.

  4. 선택 사항이지만 권장됩니다. 멤버십 인증에 TLS/SSL 연결만 사용하고 x.509 인증서만 사용하도록 모든 노드를 업데이트합니다.

    중요

    이 TLS/SSL 연결 요구 사항은 모든 연결에 적용됩니다. 즉, 클라이언트뿐만 아니라 cluster의 멤버와도 함께 사용할 수 있습니다. 즉, 클라이언트는 TLS/SSL 연결을 지정하고 cluster에 연결할 때 인증서 키 파일을 제공해야 합니다. TLS/SSL 연결에 대한 자세한 내용은 클라이언트 인증서가 필요한 MongoDB 인스턴스에 연결을 참조하세요. 클라이언트가 인증서를 제시하는 경우에만 유효성 검사를 참조하십시오.

    net.tls.moderequireTLS 로, security.clusterAuthModex509 로 업데이트합니다.

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

    net:
    tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb.pem
    clusterFile: "/etc/ssl/myReplMembershipCertificateKeyFile.pem"
    CAFile: /etc/ssl/caToValidateReceivedCertificates.pem
    security:
    clusterAuthMode: x509
    replication:
    replSetName: myReplicaSet
    net:
    bindIp: localhost,mongodb0.example.net
    port: 27017
    systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
    storage:
    dbPath: "/var/lib/mongodb"
    processManagement:
    fork: true

다음도 참조하세요.

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

참고

버전 4.2부터 MongoDB는 net.tls 설정(및 해당 명령줄 옵션)에 해당하는 net.ssl 설정(및 해당 명령줄 옵션)을 제공합니다. MongoDB가 항상 TLS 1.0 이상을 지원해 왔으므로 tls 설정/옵션은 ssl 설정/옵션 과 동일한 기능을 제공합니다.

이 섹션의 절차에서는 ssl 옵션을 사용합니다. tls 옵션을 사용하는 절차에 대해서는 업그레이드 절차( tls 옵션 사용)를 참조하세요.

참고

이 절차에서는 ssl 옵션을 사용합니다. tls 옵션( MongoDB 4 2 부터 사용 가능)을 사용하는 절차에 대해서는 현재 TLS/SSL을 사용하는 클러스터( ssl 옵션 사용)를 참조하세요.

TLS/SSL 및 키 파일 인증을 사용하는 cluster의 경우 x.509 cluster 인증으로 업그레이드하려면 다음 롤링 업그레이드 프로세스를 사용하세요.

  1. cluster의 각 노드에 대해 --clusterAuthMode 옵션을 sendKeyFile 로 설정하고 옵션 --sslClusterFile 을 노드 인증서의 적절한 경로로 설정하여 노드를 시작합니다. 다른 TLS/SSL 옵션 과 특정 구성에 필요한 기타 옵션을 포함합니다. 예를 들면 다음과 같습니다.

    mongod --replSet <name> --sslMode requireSSL --clusterAuthMode sendKeyFile --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL Certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)>

    이 설정을 사용하면 각 노드는 계속해서 해당 키 파일을 사용하여 자신을 구성원으로 인증합니다. 그러나 이제 각 노드는 다른 노드의 키 파일 또는 x.509 인증서를 수락하여 해당 노드를 인증할 수 있습니다. cluster의 모든 노드를 이 설정으로 업그레이드합니다.

  2. 그런 다음 cluster의 각 노드에 대해 노드에 연결하고 setParameter 명령을 사용하여 clusterAuthModesendX509 로 업데이트합니다. [1] 예를 들면 다음과 같습니다.

    db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )

    이 설정을 사용하면 각 노드는 이전 단계에서 --sslClusterFile 옵션으로 지정된 x.509 인증서를 사용하여 자신을 구성원으로 인증합니다. 그러나 각 노드는 해당 노드를 인증하기 위해 다른 노드의 키 파일 또는 x.509 인증서를 계속 수락합니다. 클러스터의 모든 노드를 이 설정으로 업그레이드합니다.

  3. 선택 사항이지만 권장됩니다. 마지막으로 cluster의 각 노드에 대해 노드에 연결하고 setParameter 명령을 사용하여 인증에 x.509 인증서만 사용하도록 clusterAuthModex509 로 업데이트합니다. [1] 예:

    db.adminCommand( { setParameter: 1, clusterAuthMode: "x509" } )
  4. 모든 노드를 업그레이드한 후 적절한 x.509 설정으로 구성 파일 을 편집하여 나중에 다시 시작할 때 cluster가 x.509 인증을 사용하도록 합니다.

다양한 모드와 해당 설명은 --clusterAuthMode 를 참조하세요.

참고

이 절차에서는 ssl 옵션을 사용합니다. tls 옵션( MongoDB 4 2 부터 사용 가능)을 사용하는 절차에 대해서는 TLS/SSL이 아닌 키 파일을 사용하여 클러스터 업데이트( tls 옵션 사용)를 참조하세요.

TLS/SSL이 아닌 키 파일 인증을 사용하는 cluster의 경우 x.509 인증으로 업그레이드하려면 다음 롤링 업그레이드 프로세스를 사용하세요.

  1. cluster의 각 노드에 대해 --sslMode 옵션을 allowSSL 로, --clusterAuthMode 옵션을 sendKeyFile 로, 옵션 --sslClusterFile 옵션을 노드 인증서의 적절한 경로로 설정하여 노드를 시작합니다. 다른 TLS/SSL 옵션 과 특정 구성에 필요한 기타 옵션을 포함합니다. 예를 들면 다음과 같습니다.

    mongod --replSet <name> --sslMode allowSSL --clusterAuthMode sendKeyFile --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)>

    --sslMode allowSSL 설정을 사용하면 노드에서 TLS/SSL과 비 TLS/비 SSL 수신 연결을 모두 받아들일 수 있습니다. 발신 연결이 TLS/SSL을 사용하지 않습니다.

    --clusterAuthMode sendKeyFile 설정을 사용하면 각 노드가 계속해서 해당 키 파일을 사용하여 자신을 멤버로 인증할 수 있습니다. 그러나 이제 각 노드는 다른 노드의 키 파일 또는 x.509 인증서를 수락하여 해당 노드를 인증할 수 있습니다.

    클러스터의 모든 노드를 이 설정으로 업그레이드합니다.

  2. 그런 다음 cluster의 각 노드에 대해 노드에 연결하고 setParameter 명령을 사용하여 sslModepreferSSL 로, clusterAuthModesendX509 로 업데이트합니다. [1] 예:

    db.adminCommand( { setParameter: 1, sslMode: "preferSSL", clusterAuthMode: "sendX509" } )

    sslMode 을(를) preferSSL(으)로 설정하면 노드는 TLS/SSL과 비TLS/비SSL 수신 연결을 모두 허용하고, 발신 연결은 TLS/SSL을 사용합니다.

    clusterAuthModesendX509 로 설정하면 각 노드는 이전 단계에서 --sslClusterFile 옵션으로 지정된 x.509 인증서를 사용하여 자신을 구성원으로 인증합니다. 그러나 각 노드는 해당 노드를 인증하기 위해 다른 노드의 키 파일 또는 x.509 인증서를 계속 수락합니다.

    클러스터의 모든 노드를 이 설정으로 업그레이드합니다.

  3. 선택 사항이지만 권장됩니다. 마지막으로 cluster의 각 노드에 대해 노드에 연결하고 setParameter 명령을 사용하여 sslModerequireSSL 로, clusterAuthModex509 로 업데이트합니다. [1] 예:

    db.adminCommand( { setParameter: 1, sslMode: "requireSSL", clusterAuthMode: "x509" } )

    sslModerequireSSL 로 설정하면 노드는 TLS/SSL 연결만 사용합니다.

    clusterAuthModex509 로 설정하면 노드는 인증에 x.509 인증서만 사용합니다.

  4. 모든 노드를 업그레이드한 후 적절한 TLS/SSL 및 x.509 설정으로 구성 파일 을 편집하여 나중에 다시 시작할 때 cluster가 x.509 인증을 사용하도록 합니다.

다양한 모드와 해당 설명은 --clusterAuthMode 를 참조하세요.

[1](1, 2, 3, 4, 5, 6, 7) setParameter 명령을 사용하는 대신 적절한 TLS/SSL 및 x509 옵션과 값을 사용하여 노드를 다시 시작할 수도 있습니다.
← 회원 인증에 x.509 인증서 사용