X.509
개요
X.509 인증 메커니즘 에서 서버 와 클라이언트 는 TLS 프로토콜 을 사용하여 X.509 공개 키 인증서를 교환합니다. 이 메커니즘을 사용하여 MongoDB Atlas, MongoDB Enterprise Advanced 및 MongoDB Community Edition 에 인증할 수 있습니다.
팁
X.509 메커니즘
.NET/ C# 드라이버 와 함께 TLS/SSL을 사용하는 방법을 학습 보려면 TLS/SSL을 참조하세요.
X.509 인증서에 대한 자세한 내용은 MongoDB Server 매뉴얼의 X. 를 참조하세요.509
코드 자리 표시자
이 페이지의 코드 예제에서는 다음 자리 표시자를 사용합니다.
+srv
: MongoDB Atlas cluster 에 연결하는 경우에만 연결 문자열 접두사에 이 옵션을 포함합니다.+srv
옵션에 학습 보려면 MongoDB Server 매뉴얼의 연결 문자열 형식을 참조하세요.<hostname>
: MongoDB deployment 의 네트워크 주소 입니다.<port>
: MongoDB deployment 서버의 포트 번호입니다. 이 매개 변수를 생략하면 운전자 는 기본값 포트 번호(27017
)를 사용합니다. MongoDB Atlas cluster 에 연결할 때는 포트 번호가 필요하지 않습니다.<X.509 certificate username>
: X.509 인증서와 연결된 사용자의 사용자 사용자 이름 입니다. 사용자 이름 이름은 인증서의 고유 주체 이름과 일치해야 합니다. 이 매개변수를 생략하면 MongoDB deployment 는 X.509 인증서에서 사용자 이름 을 유추합니다.<path to X.509 certificate>
: X.509 인증서 파일 의 경로입니다.<X.509 certificate password>
: X.509 인증서의 비밀번호입니다.
이 페이지의 코드 예제를 사용하려면 이러한 자리 표시자를 원하는 값으로 바꾸세요.
애플리케이션에서 X.509 인증 사용
인증 에 X. 인증서를 사용하려면 객체 를 사용하여509 MongoClientSettings
X. 인증서의509 경로와 인증서의 비밀번호를 지정해야 합니다. 인증서는 PKCS #12 (.p12
) 형식을 사용해야 합니다.
팁
.pem을 .p12로 변환
인증서가 PEM( .pem
) 형식을 사용하는 경우 이를 .p12
형식으로 변환해야 합니다. 인증서를 변환하려면 openssl
다음 코드 예시 와 같이 명령줄 도구를 사용합니다.
openssl pkcs12 -export -out <.p12 file> -inkey <private key file> -in <.pem file>
에 대한 openssl-pkcs12
자세한 내용은 OpenSSL 설명서를 참조하세요.
또한 MONGODB-X509
을 인증 메커니즘 으로 지정하고 $external
을 인증 소스로 지정해야 합니다. 연결 문자열 에서 또는 MongoCredential
객체 를 사용하여 이러한 옵션을 지정할 수 있습니다. Connection String 또는 MongoCredential 탭 을 선택하여 해당 구문을 확인합니다.
var connectionString = "mongodb[+srv]://<hostname>[:<port>]/?authSource=$external&authMechanism=MONGODB-X509"; var settings = MongoClientSettings.FromConnectionString(connectionString); settings.UseTls = true; settings.SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") } };
var credential = MongoCredential.CreateMongoX509Credential("<X.509 certificate username>"); var settings = new MongoClientSettings { Credential = credential, SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") }, }, UseTls = true, Server = new MongoServerAddress("<hostname>"[, "<port>"]), };
문제 해결
Windows 를 운영 체제로 사용하는 경우 .NET/ C# 드라이버 가 메모리에서 X.509
인증 인증서를 찾을 수 없는 문제가 발생할 수 있습니다. 이 오류는 다음과 같은 오류 메시지를 표시합니다.
No credentials are available in the security package
이 문제를 해결하려면 애플리케이션 에 다음 코드를 추가하세요. 이 코드는 애플리케이션 에 필요한 X.509
인증서를 생성하여 디스크에 저장합니다.
using (X509Certificate2 certWithKey = certOnly.CopyWithPrivateKey(key)) { return new X509Certificate2(certWithKey.Export(X509ContentType.Pkcs12)); }
API 문서
이 페이지에 사용된 MongoDB 메서드 및 유형에 학습 보려면 다음 API 설명서를 참조하세요.
이 페이지에 사용된 .NET 유형에 대한 자세한 내용은 다음 MSDN 설명서를 참조하세요.