2017-01-25 2 views
0

Я отправил предыдущий вопрос на прошлой неделе here.Невозможно подключиться к RabbitMq Broker, используя файл pkcs12

На машине, которую я использовал, я смог правильно ее запустить. Теперь, выполняя настройку на другой машине, я обошел все, однако, при подключении к брокеру RabbitMq с использованием клиентского приложения .NET он не работает в файле pkcs12, говоря, что он плохо отформатирован.

Я несколько раз обновил этот файл, убедившись, что я использую файлы клиента и сервера .pem, соответственно, по-прежнему безрезультатно.

В troubleshooting link here все испытания проходят полностью.

Окружающая среда:

Erlang 19.1

RabbitMq 3.6.6

Windows Server 2012 R2

Мой файл конфигурации RabbitMq:

[ 
    {rabbit, [ 
    {ssl_listeners, [5671]}, 
    {ssl_options, [{cacertfile,"C:\\rabbitcerts\\testca\\cacert.pem"}, 
        {certfile,"C:\\rabbitcerts\\server\\cert.pem"}, 
        {keyfile,"C:\\rabbitcerts\\server\\key.pem"}, 
        {depth, 2}, 
        {verify,verify_peer}, 
        {fail_if_no_peer_cert,false}]} 
    ]} 
]. 

Выполнение этой команды:

openssl s_client -connect mitvs-atm01:5671 -tls1 -cert client/cert.pem -key client/key.pem -CAfile testca/cacert.pem

Результаты в успехе:

CONNECTED(00000130) 
depth=1 CN = MyTestCA 
verify return:1 
depth=0 CN = mitvs-atm01, O = server 
verify return:1 
--- 
Certificate chain 
0 s:/CN=mitvs-atm01/O=server 
    i:/CN=MyTestCA 
1 s:/CN=MyTestCA 
    i:/CN=MyTestCA 
--- 
Server certificate 
-----BEGIN CERTIFICATE----- 
MIIC5DCCAcygAwIBAgIBATANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDDAhNeVRl 
c3RDQTAeFw0xNzAxMjUwMjIxMTZaFw0xODAxMjUwMjIxMTZaMCcxFDASBgNVBAMM 
C21pdHZzLWF0bTAxMQ8wDQYDVQQKDAZzZXJ2ZXIwggEiMA0GCSqGSIb3DQEBAQUA 
A4IBDwAwggEKAoIBAQC7bqHNpdY1OUstv1EU361/tvsCZigsBy9+xAAkzmEVbUrl 
ISOdyvA+oC5oKx2e7otENEAZ6I7D6AqhUsWltqCD5cE8pFipE1VDYchPMSLYH+xT 
dYbuGBrEbMw4FYsgpL9WGHFQKkeoNDyJR9McUSmtBi5uQcxmIt+RFs2O6qxwS8pG 
32VFwZEncxD4SfPF05pGBaAtV0IHGcw+mRlqHBEwK2qFr1b2FQacCGyv+JFea6ok 
TFjKYByZrQCT3l3mlbmZjt+qFNMg4BhA4TWx8zhO5XzG3tiV86G+x8RJUllisKkK 
A+dcaMpZ7wr3sz8WrP++UtE1rjDzX6Va3kP6O2YdAgMBAAGjLzAtMAkGA1UdEwQC 
MAAwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEB 
CwUAA4IBAQBlfQcXWrd+7f9DVx2BIyVcGHouWDFirwSU5IvvgIYyZFbivgosW9Wd 
E7fueBUTkZihWG2KxXesVPIlaNy3851KV+r0/zZ+Frp7VX4FEcP900t+Bgy/w3fZ 
9YHiZhGHQriA8YmQOkg/YweHU1GsT8APk3JbuqtyI+RRn5iltbDNGF2ch6me/w9E 
0Jv0UJvQVuPqSr0mONCyM6JeDLAkaOHTkNEy++uEar/DWQB6D2hJGj7DxavcA/bL 
GPbP0LDU3Vv6pn7i7WNHeye2E2Vq2WEAaacYjiluBpCEnvlCFZXX96jbmnzScJZ2 
ZlIo27YDOfze6nuNQ1aqGT1wccIoVnhZ 
-----END CERTIFICATE----- 
subject=/CN=mitvs-atm01/O=server 
issuer=/CN=MyTestCA 
--- 
Acceptable client certificate CA names 
/CN=MyTestCA 
Client Certificate Types: RSA sign 
--- 
SSL handshake has read 1672 bytes and written 2269 bytes 
--- 
New, TLSv1/SSLv3, Cipher is AES256-SHA 
Server public key is 2048 bit 
Secure Renegotiation IS supported 
Compression: NONE 
Expansion: NONE 
No ALPN negotiated 
SSL-Session: 
    Protocol : TLSv1 
    Cipher : AES256-SHA 
    Session-ID: BD57EFDA3213AA48076CDB95E4EB60A79224B604F3C491CD0BB3D15700A3AC50 

    Session-ID-ctx: 
    Master-Key: 08F6E2B22EC7EB1FCBAB99A730F6301732FA56CB83F4E9DB4546DC27591E271A 
67C115510EBECFBFDA1BCFE47DF49627 
    Key-Arg : None 
    PSK identity: None 
    PSK identity hint: None 
    SRP username: None 
    Start Time: 1485370174 
    Timeout : 7200 (sec) 
    Verify return code: 0 (ok) 

После успешного подключения я создал файлы keycert.p12 в каждом каталоге клиента и сервера на основе соответствующих файлов .pem.

Моего код клиента:

_busControl = Bus.Factory.CreateUsingRabbitMq(x => 
{ 
    var host = x.Host(new Uri(_rabbitHost), h => 
    { 
     h.Username(UserName); 
     h.Password(Password); 
     h.UseSsl(s => 
     { 
      s.ServerName = SslHostName; 
      s.CertificatePath = @"client\keycert.p12"; 
      s.CertificatePassphrase = SslPassphrase; 
      s.Protocol = SslProtocols.Tls; 
     }); 
    }); 

    x.ReceiveEndpoint(host, _imageExamEndpoint, 
     e => { e.Consumer<UploadImageExamRequestConsumer>(); }); 

    x.ReceiveEndpoint(host, _worklistEndpoint, 
     e => { e.Consumer<WorklistRequestConsumer>(); }); 
}); 

Это прекрасно работает на другой машине, но на новой машине, что мы установка, мы получаем следующую ошибку:

RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> System.ComponentModel.Win32Exception: The message received was unexpected or badly formatted 
    --- End of inner exception stack trace --- 
    at RabbitMQ.Client.EndpointResolverExtensions.SelectOne[T](IEndpointResolver resolver, Func`2 selector) 
    at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName) 
    --- End of inner exception stack trace --- 
    at RabbitMQ.Client.ConnectionFactory.CreateConnection(IEndpointResolver endpointResolver, String clientProvidedName) 
    at RabbitMQ.Client.ConnectionFactory.CreateConnection(IList`1 hostnames, String clientProvidedName) 
    at MassTransit.RabbitMqTransport.Integration.RabbitMqConnectionCache.SendUsingNewConnection(IPipe`1 connectionPipe, ConnectionScope scope, CancellationToken cancellationToken) 

Connect failed: [email protected]:5671/ 
+1

Я считаю, что Microsoft предпочитает PFX, а не PKCS # 12. Они почти одинаковы, но не совсем то же самое. Первое, что вы должны попробовать - это преобразовать в PFX на машине Windows. – jww

+0

@jww Спасибо - изменил его на '.pfx' и получил те же результаты. Странно, потому что '.p12' отлично работал на другой машине. Я последовал тем же самым шагам. Оба являются dev машинами. Однако он работал на Windows Server 2016, но он не работает на Windows Server 2012 R2. – ragerory

ответ

0

Глядя между моей рабочей версией и моя нерабочая версия, только вещь, которая была другой, была моей версией Erlang.

Я обновил свой Windows Server 2012 R2 с Erlang 19.1 до Erlang 19.2, и он успешно начал и прослушал безопасно.