Docs Menu
Docs Home
/ / /
C#/.NET
/ /

X.509

이 페이지의 내용

  • 개요
  • 코드 자리 표시자
  • 애플리케이션에서 X.509 인증 사용
  • 문제 해결
  • API 문서

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 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));
}

이 페이지에 사용된 MongoDB 메서드 및 유형에 학습 보려면 다음 API 설명서를 참조하세요.

이 페이지에 사용된 .NET 유형에 대한 자세한 내용은 다음 MSDN 설명서를 참조하세요.

돌아가기

SCRAM