이 튜토리얼에서는 자체 관리 복제본 세트 에서 TLS를 구성하는 방법을 보여줍니다. 노드 간 X.509 인증 활성화 데 필요한 클러스터 내 mTLS를 사용할지 여부에 따라 접근 방식을 선택합니다.
중요
These steps apply to self-managed MongoDB deployments. MongoDB Atlas clusters use TLS by default. If you use Cloud Manager or Ops Manager, configure TLS through your deployment management tool.
시작하기 전에
시작하기 전에 다음 사항이 있는지 확인하세요.
단계
서버 노드 간에 클러스터 내 mTLS 또는 X.509 인증이 필요하지 않은 경우 다음 절차를 따릅니다.
각 노드 에서 설정 파일 편집
각 노드에서 mongod 설정 파일을 찾아 열어야 합니다. 파일이 없는 경우 파일을 만듭니다. 다음 TLS 옵션을 추가합니다. 인증서 파일에 대한 절대 경로를 사용합니다.
예를 들어 프라이머리 노드의 설정 파일은 다음과 같습니다.
net: tls: mode: allowTLS certificateKeyFile: /etc/ssl/mongodb/mongo0.pem CAFile: /etc/ssl/mongodb/ca.pem allowConnectionsWithoutCertificates: true security: clusterAuthMode: keyFile keyFile: /etc/ssl/mongodb/keyfile setParameter: tlsWithholdClientCertificate: true
mode를allowTLS로 설정하다 TLS 연결을 허용하지만 필요하지 않으므로 노드가 복제 중단하지 않고 롤링 재시작 완료할 수 있습니다.certificateKeyFile는 노드의 인증서를 지정합니다. 구성하는 특정 노드의 인증서 키 파일로 파일 이름을 대체합니다.CAFile는 노드의 인증서에 서명한 CA 인증서를 지정합니다.allowConnectionsWithoutCertificates클라이언트가 TLS 인증서를 제공하지 않고도 연결할 수 있습니다.clusterAuthMode를keyFile으로 설정하면 노드가 키 파일을 사용하여 인증할 수 있습니다.keyFile에서는 노드가 서로 인증하는 데 사용하는 키 파일을 지정합니다.tlsWithholdClientCertificate는 클러스터의 다른 노드에 아웃바운드 연결을 만들 때 노드 서버 인증서를 제시하지 못하도록 합니다. 이는 특히 인증서에clientAuthEKU가 포함되지 않은 경우 노드가 클라이언트 인증 에 서버 인증 인증서를 사용하는 것을 방지하기 때문에 필요합니다.
이 절차에 따라 노드 간 클러스터 내 mTLS 및 X.509 인증을 사용하도록 복제본 세트를 구성합니다.
각 노드 에서 설정 파일 편집
중요
노드 인증서에는 클러스터 내 mTLS에 대한 serverAuth 및 EKU가 모두 포함되어야 합니다. 인증서에 가 포함되어 있지 않은 경우 clientAuth clientAuth 대체 구성 옵션은 mTLS 기술 자문에 영향을 미치는 공공 인증 기관 정책 변경 사항을 참조하세요.
각 노드에서 mongod 설정 파일을 찾아 열어야 합니다. 파일이 없는 경우 파일을 만듭니다. 다음 TLS 옵션을 추가합니다. 인증서 파일에 대한 절대 경로를 사용합니다.
예를 들어 프라이머리 노드의 설정 파일은 다음과 같습니다.
net: tls: mode: allowTLS certificateKeyFile: /etc/ssl/mongodb/mongo0.pem CAFile: /etc/ssl/mongodb/ca.pem allowConnectionsWithoutCertificates: true clusterAuthX509: attributes: O=MongoDB security: clusterAuthMode: x509
mode를allowTLS로 설정하다 TLS 연결을 허용하지만 필요하지 않으므로 노드가 복제 중단하지 않고 롤링 재시작 완료할 수 있습니다.certificateKeyFile는 노드의 인증서를 지정합니다. 구성하는 특정 노드의 인증서 키 파일로 파일 이름을 대체합니다.CAFile는 노드의 인증서에 서명한 CA 인증서를 지정합니다.allowConnectionsWithoutCertificates클라이언트가 TLS 인증서를 제공하지 않고도 연결할 수 있습니다.net.tls.clusterAuthX509.attributes는 노드를 일반 클라이언트가 아닌 클러스터 노드로 식별하는 X.509 인증서 속성을 지정합니다. 필요한 인증서 속성에 대한 자세한 내용은 노드 X.509 인증서를 참조하세요.clusterAuthMode를x509로 설정하다 노드가 X.509 인증서를 사용하여 인증할 수 있습니다.
TLS 구성을 확인하려면 로그를 검사합니다.
롤링 재시작이 완료되면 각 노드의 로그를 검사하여 TLS가 올바르게 구성되었는지 확인합니다. mTLS 및 X.509 인증이 올바르게 구성되었는지 확인하려면 로그에 다음 내용이 포함되어야 합니다.
"msg":"Successfully authenticated", "attr": { "isClusterMember":true, "mechanism":"MONGODB-X509", "user":"CN=mongo1.example.com,O=MongoDB,L=New York City,ST=New-York,C=US" }
복제본 세트의 다른 두 노드에 대해서도 유사한 로그 메시지가 표시됩니다. 예를 들어 mongo0의 로그를 보면 mongo1 및 mongo2에 대한 위와 유사한 메시지가 표시됩니다.
다음 단계
클라이언트 애플리케이션으로 배포서버에 연결하는 방법을 학습하려면 TLS가 활성화된 복제본 세트에 연결으로 이동하세요.