Я пытаюсь подключиться к серверу Mongodb (используя SSL) в сценарии Perl, но не смог подключиться.
Исходный код:
use strict;
use IO::Socket::SSL;
use MongoDB;
use MongoDB::OID;
my $client = MongoDB::MongoClient->new(
host => 'mongodb://username:password@ip_address1:port_number, ip_address2:port_number,ip_address3:port_number/myDB?ssl=true&replicaSet=mongo123',
ssl => {
SSL_ca_file => " certificates/chain_prod.pem",
SSL_cert_file => " certificates/cert.pem",
},
auth_mechanism => "MONGODB-X509",
username => " CN=XXXXXXXXXXX,OU=XXXXXXXX,O=XXXXXXX,ST=XXXXXXXXXX,C=XX ",
# using openssl x509 -in certs/client.pem -inform PEM -subject -nameopt RFC2253
);
my $db = $client->get_database( "mydb" );
my $coll = $db->get_collection( "customers" );
my $messages = $coll->find;
while ( my $msg = $messages->next ) {
print $msg;
}
Error
NPP_EXEC: «Запустить Perl»
NPP_SAVE: C: \ Users \ royabhix \ Desktop \ perl_program \ MysqlDataBaseConnection.pl
CD: C: \ Users \ royabhix \ Desktop \ perl_program
Текущий каталог: C: \ Users \ royabhix \ Desktop \ perl_program
C: \ perl64 \ bin \ perl "MysqlDataBaseConnection.pl"
Процесс запущен (PID = 11400) >>>
MongoDB :: UsageError: неверный пароль поля в учетных данных MONGODB-X509 в строке (eval 595) 291.
MongoDB :: _ Credential :: new (undef, «механизм», «MONGODB-X509», «механизм_свойств», HASH (0x5935f10), «имя пользователя», «user123», «пароль», ...), вызываемый в C: / Perl64 / site / lib / MongoDB / MongoClient.pm строка 1181
MongoDB :: MongoClient :: _ build__credential (MongoDB :: MongoClient = HASH (0x594db50)) вызывается в (eval 450) строке 21
MongoDB :: MongoClient :: _ credential (MongoDB :: MongoClient = HASH (0x594db50)) вызывается по адресу C: /Perl64/site/lib/MongoDB/MongoClient.pm line 1149
MongoDB :: MongoClient :: _ build__topology (MongoDB :: MongoClient = HASH (0x594db50)) вызывается в (eval 446) строке 21
MongoDB :: MongoClient :: _ topology (MongoDB :: MongoClient = HASH (0x594db50)) вызывается по адресу C: /Perl64/site/lib/MongoDB/MongoClient.pm line 1291
MongoDB :: MongoClient :: BUILD (MongoDB :: MongoClient = HASH (0x594db50), HASH (0x62e87f8)) вызывается по (eval 590) линии 1014
MongoDB :: MongoClient :: new (undef, "host", "mongodb: // username1: password123 \ @ip_address: port_number, 1" ..., "ssl", HASH (0xa5dc68), "auth_mechanism", "MONGODB- X509 "," username ", ...) вызывается в строке MysqlDataBaseConnection.pl 4
<<< Процесс завершен (PID = 11400). (Код выхода 255) </p>
================ ГОТОВ ================
Без SSL (Mongodb + perl):
use MongoDB ();
use Data::Dumper qw(Dumper);
my $client = MongoDB::MongoClient->new(host => 'localhost', port => 27017);
my $db = $client->get_database( 'mydb');
my $messages_coll = $db->get_collection('customers');
my $messages = $messages_coll->find;
while (my $p = $messages->next) {
print Dumper $p;
}
Выход:
NPP_EXEC: "Run Perl"
NPP_SAVE: C:\Users\royabhix\Desktop\perl_program\MongoDBConnection.pl
CD: C:\Users\royabhix\Desktop\perl_program
Current directory: C:\Users\royabhix\Desktop\perl_program
C:\perl64\bin\perl "MongoDBConnection.pl"
Process started (PID=16796) >>>
$VAR1 = {
'password' => 'intel123',
'username' => 'rpn',
'_id' => bless( {
'value' => '5b3b96ea7517d164f102d614'
}, 'MongoDB::OID' )
};
$VAR1 = {
'_id' => bless( {
'value' => '5b3b96f27517d164f102d615'
}, 'MongoDB::OID' ),
'username' => 'faizkhax',
'password' => 'intel456'
};
$VAR1 = {
'_id' => bless( {
'value' => '5b3b96f27517d164f102d616'
}, 'MongoDB::OID' ),
'username' => 'kunal',
'password' => 'intel789'
};
<<< Process finished (PID=16796). (Exit code 0)
================ READY ================
Приведенный выше фрагмент кода работает нормально, поскольку SSL здесь не применяется.
Но я хочу иметь тот же код с SSL.
Любая помощь будет принята с благодарностью. Заранее спасибо