【发布时间】:2016-01-11 16:15:46
【问题描述】:
我正在尝试使用从 C# 客户端到 MongoDB 的 X.509 自签名证书测试身份验证。我已经成功使用 ssl 在控制台窗口中运行 mongod 并使用 mongo 从另一个控制台窗口连接到它命令:
mongod --clusterAuthMode x509 --sslMode requireSSL --sslPEMKeyFile mongodb.pem --sslCAFile client.pem
mongo --ssl --sslCAFile mongodb.pem --sslPEMKeyFile client.pem
证书文件是通过关注these instructions生成的。
MongoDB 驱动程序需要我生成的 pfx 文件:
openssl pkcs12 -export -in client.pem -inkey client-cert.key -out client.pfx
实际代码如下:
private static void TryConnect()
{
var cert = new X509Certificate2(@"C:\Program Files\MongoDB\Server\3.2\bin\client.pfx", "test");
var settings = new MongoClientSettings
{
Credentials = new[]
{
MongoCredential.CreateMongoX509Credential("subject= emailAddress=test@test.com,CN=127.0.0.1,OU=Test,O=Test,L=Cph,C=DK")
},
SslSettings = new SslSettings
{
ClientCertificates = new[] { cert },
},
UseSsl = true
};
settings.Server = new MongoServerAddress("127.0.0.1");
MongoClient client = new MongoClient(settings);
var db = client.GetServer().GetDatabase("test");
db.CreateCollection("test");
}
最后一行抛出异常:Unable to connect to server 127.0.0.1:27017: The remote certificate is invalid according to the validation procedure.
有谁知道如何让它工作?
【问题讨论】: