2017-01-25 4 views
0

Ich habe eine letzte Frage letzte Woche here.Kann keine Verbindung mit RabbitMq Broker mit pkcs12 Datei

Auf der Maschine, die ich benutzte, konnte ich das richtig machen. Jetzt, nachdem ich die Einrichtung auf einem anderen Rechner vorgenommen habe, bin ich jedoch an allem vorbeigekommen. Bei der Verbindung mit dem RabbitMq Broker unter Verwendung einer .NET Client-Anwendung schlägt die Datei pkcs12 fehl und sagt, sie sei falsch formatiert.

Ich habe diese Datei jetzt einige Male neu erstellt und stelle sicher, dass ich den Client und den Server .pem Dateien jeweils noch nutzlos nutze.

In der troubleshooting link here gehen alle Tests vollständig.

Umwelt:

Erlang 19.1

RabbitMq 3.6.6

Windows Server 2012 R2

Meine RabbitMq Konfigurationsdatei:

[ 
    {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}]} 
    ]} 
]. 

Ausführen dieses Befehls:

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

Ergebnisse in Erfolg:

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) 

Nach erfolgreicher Verbindung erstellte ich die keycert.p12 Dateien in jedem der Client- und Serververzeichnisse basierend auf den entsprechenden .pem Dateien.

Mein Client-Code:

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

Dies funktioniert auf der anderen Maschine in Ordnung, aber auf die neue Maschine, die Setup wir, wir die folgende Fehlermeldung erhalten:

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

Ich glaube, Microsoft bevorzugt oder bevorzugt PFX, nicht PKCS # 12. Sie sind _mostly_ das selbe, aber nicht genau dasselbe. Das erste, was Sie versuchen sollten, ist die Konvertierung in PFX auf dem Windows-Rechner. – jww

+0

@jww Danke - änderte es zu '.pfx' und bekam die gleichen Ergebnisse. Seltsam, weil die '.p12' auf der anderen Maschine gut funktionierte. Ich folgte denselben Schritten. Beide sind Dev-Maschinen. Es funktionierte jedoch unter Windows Server 2016, aber es funktioniert nicht unter Windows Server 2012 R2. – ragerory

Antwort

0

zwischen meiner Arbeitsversion der Suche und meine nicht funktionierende Version, die nur Sache, die anders war, war meine Version Erlang.

Ich aktualisierte mein Windows Server 2012 R2 von Erlang 19.1 zu Erlang 19.2 und es erfolgreich gestartet und hörte sicher zu.

Verwandte Themen