2016-07-13 7 views
0

Zuerst folgte ich this Schlüssel, Zertifikate und CA-Zertifikate auf Verzeichnisse zu erzeugen, die sind Client, Server und testca. Dann habe ich überprüft, SSL funktioniert. Dann folgte ich thisRabbitMQ Web-Stomp Plugin, und mein ssl_config ist wie folgt zu konfigurieren:SSL Konfigurationsproblem mit RabbitMQ Web-Stomp Plugin

[ 
    {rabbitmq_web_stomp, 
     [{ssl_config, [{port,  15671}, 
        {backlog, 1024}, 
        {certfile, "path/to/certs/client/cert.pem"}, 
        {keyfile, "path/to/certs/client/key.pem"}, 
        {cacertfile, "path/to/certs/testca/cacert.pem"}, 
        {password, "changeme"}]}]} 
]. 

Allerdings, wenn ich versuchte, es über WebSockets durch folgenden Code zu verbinden, die von here kopiert und ich habe ein paar Änderungen vorgenommen.

<!DOCTYPE html> 
<html><head> 
    <script src="jquery.min.js"></script> 

    <script src="stomp.js"></script> 
    <style> 
     .box { 
      width: 440px; 
      float: left; 
      margin: 0 20px 0 20px; 
     } 
     .box div, .box input { 
      border: 1px solid; 
      -moz-border-radius: 4px; 
      border-radius: 4px; 
      width: 100%; 
      padding: 5px; 
      margin: 3px 0 10px 0; 
     } 
     .box div { 
      border-color: grey; 
      height: 300px; 
      overflow: auto; 
     } 
     div code { 
      display: block; 
     } 
     #first div code { 
      -moz-border-radius: 2px; 
      border-radius: 2px; 
      border: 1px solid #eee; 
      margin-bottom: 5px; 
     } 
     #second div { 
      font-size: 0.8em; 
     } 
    </style> 
    <title>RabbitMQ Web STOMP Examples : Echo Server</title> 
    <link href="main.css" rel="stylesheet" type="text/css"/> 
</head><body lang="en"> 
    <h1><a href="index.html">RabbitMQ Web STOMP Examples</a> > Echo Server</h1> 

    <div id="first" class="box"> 
     <h2>Received</h2> 
     <div></div> 
     <form><input autocomplete="off" value="Type here..."></input></form> 
    </div> 

    <div id="second" class="box"> 
     <h2>Logs</h2> 
     <div></div> 
    </div> 

    <script> 
     var has_had_focus = false; 
     var pipe = function(el_name, send) { 
      var div = $(el_name + ' div'); 
      var inp = $(el_name + ' input'); 
      var form = $(el_name + ' form'); 
      var print = function(m, p) { 
       p = (p === undefined) ? '' : JSON.stringify(p); 
       div.append($("<code>").text(m + ' ' + p)); 
       div.scrollTop(div.scrollTop() + 10000); 
      }; 
      if (send) { 
       form.submit(function() { 
        send(inp.val()); 
        inp.val(''); 
        return false; 
       }); 
      } 
      return print; 
     }; 
     // Stomp.js boilerplate 

      var client = Stomp.client('wss://192.168.111.131:15671/ws'); 

     client.debug = pipe('#second'); 
     var print_first = pipe('#first', function(data) { 

      client.send('/queue/webstomp', {"content-type":"text/plain"}, data); 


     }); 
     var on_connect = function(x) { 
      id = client.subscribe("/queue/webstomp", function(d) { 
       print_first(d.body); 
      }); 
     }; 
     var on_error = function() { 
     console.log('error'); 
     }; 
     client.connect('test', 'test', on_connect, on_error, '/'); 
     $('#first input').focus(function() { 
      if (!has_had_focus) { 
       has_had_focus = true; 
       $(this).val(""); 
      } 
     }); 
    </script> 
</body></html> 

es antwortete mir, dass ich die Verbindung als folgenden Screenshot verloren. enter image description here

Ich würde wirklich jeden hilfreichen Vorschlag zu diesem Thema schätzen.

BTW: Dieses Codebeispiel funktioniert, wenn ich SSL nicht verwendet habe.

Antwort

0

Schließlich dachte ich dies aus, indem this post Bezug genommen wird, so ist der entscheidende Punkt ist, indem sie die Adresse explizit mein Zertifikat autorisiert in https erste, in meinem Fall ist wss://192.168.111.131:15671/ws. Also muss ich https://192.168.111.131:15671/ws im Browser besuchen und die Ausnahme autorisieren und dann kann ich meine wss Verbindung normal machen.

Verwandte Themen