SSL-соединение с AMQ с использованием NMS C # - PullRequest
0 голосов
/ 22 сентября 2019

ActiveMQ является новым для меня, особенно с использованием C #, и я прошу вашей помощи, пожалуйста.Есть сервер, на котором работает ActiveMQ, и есть клиентский компьютер, с которого я хочу подключиться к AMQ.Оба на Windows 20XX.Я сгенерировал сертификаты, используя эту ссылку , импортированную broker.cer в корневой доверенный центр сертификации на сервере.Также я оставил файлы broker. * На сервере в папке, где хранились все сертификаты AMQ, и скопировал client. * Вместе с broker. * В папку, где хранятся клиентские сертификаты, и импортировал client.cer в Личное хранилище на клиенте.Затем я подготовил код, как показано ниже:

SslTransportFactory ssl = new SslTransportFactory();
string amq_broker = "ssl://test-server.comp.local:20233";
ssl.ServerName = "1.2.3.4"; //IP of server where AMQ is running
ssl.ClientCertFilename = "client/server/path/to/client.cer"; 
ssl.ClientCertPassword = password; //password specified for generating certificates; 
ssl.BrokerCertFilename = "d:/path/broker.cer"; //path to broker.cer saved on client
ssl.KeyStoreLocation = "CurrentUser"; //also tried "LocalMachine" with the same wrong result
ssl.SslProtocol = "Tls12";
ssl.AcceptInvalidBrokerCert = true;
string amq_name = amq_broker; 
Uri uri = new Uri(amq_name);
ITransport transport = ssl.CreateTransport(uri);
//transport.Start();
Connection connection = new Connection(uri, transport, new IdGenerator());
connection.UserName = user; //user on server with access to AMQ. Similar user exists on client and used for running applications on server in client/server architecture";
connection.Password = pass; //password for above user
connection.Start();  // -> here is error: 

Apache.NMS.NMSSecurityException: User credentials are invalid.
   at Apache.NMS.ActiveMQ.Connection.CheckConnected() in c:\dev\NMS.ActiveMQ\src\main\csharp\Connection.cs:line 1041
   at Apache.NMS.ActiveMQ.Connection.Start() in c:\dev\NMS.ActiveMQ\src\main\csharp\Connection.cs:line 552

Я также попытался использовать сетевые учетные данные, такие как «домен \ пользователь» / пароль, также некоторые учетные данные администратора, но результат остается тем же.Я вижу правильный хэш сертификата по коду:

var hash = X509Certificate
           .CreateFromCertFile(ssl.ClientCertFilename)
           .GetCertHashString();

Что я делаю неправильно или пропустил?Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...