SSL Support til Rabbit + .Net + Windows

Indlæg af Hanne Mølgaard Plasc

Problem



jeg har forsøgt at etablere en ssl-støtte til min kaninmq-ansøgning, jeg har fulgt rabbitmq-dokumentationen til at inkludere ssl-support i min .net-ansøgning til kanin. Jeg har været i stand til at oprette certifikater til ssl-godkendelsen og oprettede en config-fil for kanin og placeret den i appdata mappen inde i kaninMQ mappen koden for config filen: [9]


[
 {rabbit, [
 {ssl\_listeners, [5671]},
 {ssl\_options, [{cacertfile,"C:	estcacacert.cer"},
                {certfile,"C:servercert.pem"},
                {keyfile,"C:serverkey.pem"},
                {verify,verify\_peer},
                {fail\_if\_no\_peer\_cert,false}]}
 ]}
 ]


Jeg har ændret min c # kode for kaninMQ som denne for udgiveren:


        ConnectionFactory factory = new ConnectionFactory();
        factory.Ssl.ServerName = System.Net.Dns.GetHostName();
        factory.Ssl.CertPath = "C:\server\keycert.p12";
        factory.Ssl.CertPassphrase = "password";
        factory.Ssl.Enabled = true;


men får en fejl: BrokerUnreachableException var uhyggelig.


nogen tips eller hjælp? nogen minut ting mangler lad mig vide?


bruger RabbitMQ: 2,51.
Erlang: R14B01
OS: Windows og på .net klient.


StackTrace:


Exception Message: None of the specified endpoints were reachable

Source: RabbitMQ.Client   

Stacktrace: at RabbitMQ.Client.ConnectionFactory.CreateConnection(Int32 maxRedirects)
               at RabbitMQ.Client.ConnectionFactory.CreateConnection()
               at RabbitProducer.Program.Main(String[] args) in C:Userspc 1DocumentsVisual Studio 2008ProjectsRabbitProducerRabbitProducerProgram.cs:line 36


Mæglerlog:


=INFO REPORT==== 9-Aug-2011::11:39:05 ===
Limiting to approx 924 file handles (829 sockets)

=INFO REPORT==== 9-Aug-2011::11:39:05 ===
Memory limit set to 804MB.

=INFO REPORT==== 9-Aug-2011::11:39:05 ===
msg\_store\_transient: using rabbit\_msg\_store\_ets\_index to provide index

=INFO REPORT==== 9-Aug-2011::11:39:05 ===
msg\_store\_persistent: using rabbit\_msg\_store\_ets\_index to provide index

=INFO REPORT==== 9-Aug-2011::11:39:05 ===
started TCP Listener on [::]:5672

=INFO REPORT==== 9-Aug-2011::11:39:05 ===
started TCP Listener on 0.0.0.0:5672

Bedste reference


BrokerUnreachableException opstår, når klienten ikke kan oprette forbindelse til mægleren. Dette kan ske af en række årsager: Mægler ikke kører, Windows Firewall blokerer port 5671, certifikater blev ikke installeret korrekt på begge sider af forbindelsen.


At fejle:



  • Er mægleren lytter på 5671? Kontroller logfilen for den post, der nævner ssl lyttere. Det skal se ud:




  = INFO REPORT ==== 8-aug-2011 :: 11: 51: 47 ===

  startede SSL Listener på 0.0.0.0:5671



Hvis den pågældende post ikke er i logfilen, skal du prøve at køre rabbitmq via scriptet rabbitmq-server.bat i Program FilesRabbitMQ Server abbitmq-server-x.x.xsbin og kontrollere, at 'config file: ...' under banneret er sat til din config fil. (none) betyder, at mægleren ikke kunne finde filen.


Når du ved, at konfigurationsfilen læses, skal du sørge for at have de rigtige indstillinger som beskrevet i RabbitMQ SSL Guide. [10]



  • Overgår klienten overhovedet? (ignorerer ssl for nu) Følgende er, hvordan en fejlslået SSL-forbindelse ser ud:




  = INFO REPORT ==== 8-aug-2011 :: 11: 54: 54 ===

  accepteret TCP-forbindelse på 0.0.0.0:5671 fra 127.0.0.1:52110

  
  = INFO REPORT ==== 8-aug-2011 :: 11: 54: 54 ===

  starter TCP-forbindelse < 0.477.0> fra 127.0.0.1:52110

  
  ...

  
  = FEJLRAPPORT ==== 8-aug-2011 :: 11: 54: 55 ===

  fejl på TCP-forbindelse < 0.477.0>: {ssl\_upgrade\_error, 'uventet meddelelse'}

  
  = INFO REPORT ==== 8-aug-2011 :: 11: 54: 55 ===

  lukker TCP-forbindelse < 0.477.0>



Hvis dette ikke er i logfilen, så er det et firewall problem.



  • Er dette Windows XP? Hvis ja, held og lykke, har vi problemer med at køre SSL på den. I mange tilfælde vil Microsofts buggy .NET-implementering forhindre dig i at indlæse certifikater fra filer.

  • Hvis det er noget andet, skal du sende både fuld .NET stacktrace, de relevante mæglerloggposteringer (alt mellem 'Start TCP-forbindelse' og 'Luk TCP-forbindelse') og config fil.

  • Hvis intet andet virker, skal du prøve RabbitMQ Discuss mailinglisten. Udviklerne gør det muligt at besvare alle spørgsmål, der stilles. [11]