문서 메뉴

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

새 DN을 포함하는 x.509 클러스터 인증서의 롤링 업데이트

복제본 세트 또는 샤드 cluster의 구성원은 멤버십 인증에 x.509 인증서를 사용하여 서로를 동일한 배포의 구성원으로 식별할 수 있습니다.

서로를 동일한 배포의 멤버로 식별하기 위해 의 조직 속성(O), 조직 단위 속성(OU) 및 도메인 구성 요소(DC)를 사용합니다. 인증서가 일치해야 합니다.

조직에서 이름을 변경하는 경우와 같이 일부 상황에서는 구성원 인증서를 새 고유 이름(DN)이 있는 새 인증서로 업데이트해야 할 수 있습니다. tlsX509ClusterAuthDNOverride 매개변수를 사용하여 일치에 사용할 대체 DN 를 설정할 수 있습니다. 이 매개변수를 사용하면 다른 DN 를 사용하여 새 인증서로 인증서를 롤링 업데이트할 수 있습니다.

참고

롤링 업데이트에서는 구성원 인증서가 한 번에 하나씩 업데이트되며 배포 시 다운타임이 발생하지 않습니다. net.tls.clusterAuthX509 설정을 사용하는 cluster 또는 업데이트 후 이러한 설정을 사용할 cluster에서 롤링 업데이트를 수행하여 인증서를 로테이션하려면 X.509 cluster 인증서 로테이션을 참조하세요.

다음 튜토리얼에서는 다운타임 없이 복제본 세트의 인증서를 업데이트하는 프로세스를 설명합니다.

DN 값이 있는 각 멤버의 인증서(clusterFilecertificateKeyFile)가 "OU=10gen Server,O=10gen" 을 포함하는 복제본 세트를 가정해 보겠습니다(추가 속성은 비교의 일부로 고려되지 않음).

net.tls.mode: requireTLS
net.tls.certificateKeyFile: "./mycerts/10gen-server1.pem"
net.tls.CAFile: "./mycerts/ca.pem"
security.clusterAuthMode: x509
net.tls.clusterFile: "./mycerts/10gen-cluster1.pem"
net.tls.clusterCAFile: "./mycerts/ca.pem"

다음 절차는 멤버의 인증서(clusterFilecertificateKeyFile)가 "OU=MongoDB Server,O=MongoDB"DN 값을 가진 새 인증서로 업데이트합니다.

참고

다음 절차에서는 새 x.509 인증서가 멤버십 인증서의 다른 모든 요구 사항을 충족한다고 가정합니다. 자세한 내용은 회원 인증서 요건을 참조하세요.

이 절차를 수행하려면 배포의 모든 멤버를 다시 시작해야 합니다. 모든 멤버를 다시 시작할 때까지는 설정이 고려되지 않으므로 절차가 완료될 때까지 인스턴스에서 메시지를 기록할 수 있습니다.

이러한 메시지를 피하려면 실행 중인 멤버에서 재정의 매개변수를 설정하면 됩니다.

mongosh 를 배포의 각 멤버에 직접 연결하고 tlsX509ClusterAuthDNOverride 매개 변수를 새 인증서 DN 로 설정합니다.

db.adminCommand( { setParameter: 1, tlsX509ClusterAuthDNOverride: "OU=MongoDB Server,O=MongoDB" } )

각 멤버의 구성을 수정합니다.

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

net.tls.mode: requireTLS
net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem"
net.tls.CAFile: "./mycerts/ca.pem"
security.clusterAuthMode: x509
net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem"
net.tls.clusterCAFile: "./mycerts/ca.pem"
setParameter:
tlsX509ClusterAuthDNOverride: "OU=MongoDB Server,O=MongoDB"

각 구성원을 다시 시작할 때까지 설정이 고려되지 않습니다(다음 단계 참조).

모든 멤버에 대한 구성을 수정한 후에는 각 세컨더리를 다시 시작한 다음 프라이머리를 다시 시작합니다.

각 세컨더리 멤버 에 대해 mongosh 를 멤버에 연결하고 다음을 수행합니다.

  1. db.shutdownServer() 메서드를 사용하여 멤버를 종료합니다:

    use admin
    db.shutdownServer()
  2. 멤버를 다시 시작합니다.

    다음 세컨더리를 다시 시작하기 전에 멤버가 SECONDARY 상태에 도달했는지 확인하세요.

프라이머리의 경우 mongosh 를 멤버에 연결하고

  1. rs.stepDown() 를 사용하여 멤버를 물러나게 합니다:

    rs.stepDown()
  2. db.shutdownServer() 메서드를 사용하여 멤버를 종료합니다:

    use admin
    db.shutdownServer()
  3. 멤버를 다시 시작합니다.

모든 멤버가 새 인증서로 다시 시작된 후에는 구성에서 tlsX509ClusterAuthDNOverride 매개 변수를 제거할 수 있습니다.

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

net.tls.mode: requireTLS
net.tls.certificateKeyFile: "./mycerts/mongodb-server1.pem"
net.tls.CAFile: "./mycerts/ca.pem"
security.clusterAuthMode: x509
net.tls.clusterFile: "./mycerts/mongodb-cluster1.pem"
net.tls.clusterCAFile: "./mycerts/ca.pem"

각 구성원을 다시 시작할 때까지 설정이 고려되지 않습니다.

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