개요
X.509 인증 메커니즘 에서 서버 와 클라이언트 TLS 프로토콜 사용하여 X.509 공개 키 인증서를 교환합니다. 이 메커니즘을 사용하여 MongoDB Atlas, MongoDB Enterprise Advanced 및 MongoDB Community Edition 에 인증할 수 있습니다.
팁
X.509 메커니즘
Node.js 운전자 와 함께 TLS/SSL을 사용하는 방법을 학습 연결 가이드 에서 TLS 활성화 가이드를 참조하세요.
X.509 인증서에 대한 자세한 내용은 MongoDB Server 매뉴얼에서 x.509 인증서를 사용하여 자체 관리 배포서버에서 클라이언트 인증하기 를 참조하세요.
코드 자리 표시자
이 페이지의 코드 예제에서는 다음 자리 표시자를 사용합니다.
<cluster_url>
: MongoDB deployment 의 네트워크 주소 .<pem_certificate_file_path>
: 클라이언트 PEM 인증서 파일 의 경로입니다.
코드 예제를 사용하려면 이러한 자리 표시자를 원하는 값으로 바꾸세요.
X.509 인증을 지정합니다.
이 인증 메커니즘은 연결 문자열의 다음 매개 변수를 설정해 지정할 수 있습니다:
authMechanism
매개변수를MONGODB-X509
로 설정합니다.tls
매개변수를true
로 설정합니다.
클라이언트 인증서 파일의 위치를 연결 URI의 매개변수인 tlsCertificateKeyFile
값으로 전달합니다.
중요
항상 encodeURIComponent
메서드로 인증서 파일 경로를 URI 인코딩하여 올바르게 구문 분석되도록 합니다.
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const clusterUrl = "<cluster_url>"; const clientPEMFile = encodeURIComponent("<pem_certificate_file_path>"); const authMechanism = "MONGODB-X509"; // Replace the following with your MongoDB deployment's connection string. const uri = `mongodb+srv://${clusterUrl}/?authMechanism=${authMechanism}&tls=true&tlsCertificateKeyFile=${clientPEMFile}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() { try { // Establish and verify connection await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
TLS 옵션
다음 표에서는 연결 URI에서 설정할 수 있는 TLS 옵션에 대해 설명합니다.
매개변수 이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
| 부울 |
| 연결에서 TLS를 활성화할지 여부를 지정합니다. |
| 부울 |
| 유효하지 않은 인증서 및 일치하지 않는 호스트 이름을 허용할지 여부를 지정합니다. |
| 문자열 | TLS 연결에 사용되는 신뢰할 수 있는 하나 또는 여러 인증 기관을 포함하는 파일의 경로입니다. | |
| 문자열 | 클라이언트 인증서 파일 또는 클라이언트 비공개 키 파일의 경로입니다. 둘 다 필요한 경우 두 파일을 단일 파일로 연결해야 합니다. | |
| 버퍼 또는 문자열 | 클라이언트 비공개 키를 해독하기 위한 비밀번호가 포함된 문자열 또는 버퍼입니다. | |
| 부울 |
| 드라이버에서 유효하지 않은 인증서를 연결에 사용할 수 있도록 허용할지 여부를 지정합니다. |
| 부울 |
| 서버 호스트 이름과 TLS 인증서 호스트 이름이 일치하지 않을 때 드라이버가 오류를 발생시킬지를 지정합니다. |