SSL

  • Ich habe es früher schon mal angemerkt und gefragt, aber ich frage noch einmal, weil es wieder aktuell wurde:


    Wie bekommt man nodePush mit einem SSL-Zertifikat zum laufen?
    Ich betreibe meine Seite via https und deswegen ist es dringend notwendig, dass auch nodePush über SSL verschlüsselt wird.
    Es kam ja vor kurzem ein Update heraus. Vor diesem Update habe ich es selber zum laufen bekommen, indem ich


    Code
    sslOptions = {
        key: fs.readFileSync('ZERTIFIKAT.key'),
        cert: fs.readFileSync('ZERTIFIKAT.crt'),
        ca: fs.readFileSync('ZERTIFIKAT.crt'),
        requestCert: true,
        rejectUnauthorized: false
    };


    in der app.coffee-Datei definiert habe und dann eine entsprechende Zeile abgeändert habe:
    socket = net.createServer (c,sslOptions) ->


    Das funktioniert nun nicht mehr, da es diese Zeile so nicht mehr gibt. Tim meinte damals, dass es nur bei nginx funktionieren würde, aber ich betreibe Apache 2 und ich habe nicht vor, zu wechseln. Vor allem auch deswegen, weil es ja schlussendlich sehr wohl funktioniert hatte. Aber für die aktuelle Version finde ich einfach keine Lösung :/

    • Offizieller Beitrag

    Hallo,


    die Stelle passt definitiv nicht. Das ist für den inbound-Socket. Das für dich interessante ist die Stelle, an der der outbound-Socket initialisiert wird: https://github.com/wbbaddons/n…Push/app.coffee#L139-L141


    Ich kann dir aber leider nicht mit Details weiter helfen, für SSL verwende ich ausschließlich einen nginx. Mein Tipp wäre etwas in der Form: (require 'https').createServer options, app

  • hallo, sorry dass ich das nochmal ausgrabe aber bevor ich was falsch/kaputt mache nochmal zur Sicherheit folgende Fragen:

    • man bearbeitet die Datei /wcf/acp/be.bastelstu.wcf.nodePush/app.coffee, richtig?
    • man ersetzt server = (require 'http').Server app mit server = (require 'https').createServer options, app, richtig?
    • Nach dem Bearbeiten macht man einen Neustart und die Änderungen werden übernommen, richtig?
    • muss man den Pfad des Push-Server-Host (nodePush) im ACP (System->Optionen->Allgemein->System->Push-Server) auf https anpassen?

    Edit: ich habe den oben genannten Code versucht in die app.coffee einzufügen. Leider started der Server dann nicht mehr.


    Gruß,


    Afox

  • hi Tim,


    danke dir. Leider funzt es noch nicht. Bezüglich Zertifikat: Muss das im selben Ordner liegen wie app.coffee?


    Die Options habe ich ganz am Anfang von app.coffee definiert. Ich denke das ist korrekt so?


    Müsste der Schnipsel (require 'https').createServer options, app nicht (require 'https').createServer [b]sslOptions[/b], app heißen?


    Gruß,


    Afox

  • Tatsache. Hat auf Anhieb funktioniert, danke :)


    hi Doenervich,


    kannst du bitte nochmal ein Resümee machen mit konkreten Schritten und vollständigem Code unter dem es bei dir geklappt hat? Ich blicke hier grade nicht so recht durch und alle Versuche schlugen bisher fehl. ich schreibe nochmal was ich gemacht habe:

    • Pfad des Push-Server-Host (nodePush) im ACP (System->Optionen->Allgemein->System->Push-Server) auf https angepasst
    • app.coffee (/wcf/acp/be.bastelstu.wcf.nodePush/app.coffee) folgendes hinzugefügt

    • Code
      sslOptions = {
      key: fs.readFileSync('/Pfad/zu/Cert/Zertifikat.key'),
      cert: fs.readFileSync('/Pfad/zu/Cert/Zertifikat.crt'),
      ca: fs.readFileSync('/Pfad/zu/Cert/Zertifikat.crt'),
      requestCert: true,
      rejectUnauthorized: false
      };


    • server = (require 'http').Server app ersetzt durch server = (require 'https').createServer sslOptions, app
    • Neustart Nodepush

    Kann open_basedir ein Problem in diesem Fall sein? Vor allem in Bezug auf das Zertifikat? Dieses liegt außerhalb des Documentroot des Nutzers.


    Auf dem Server läuft Fast CGI.


    Gruß,


    Afox

  • nodepush started nicht mehr sobald ich den genannten Code eintrage :(


    Edit: Gibt es einen Log wo nähere Infos über das Problem zu finden sein könnten? Mein Horizont reicht aktuell nur bis zum Syslog ^^

  • hm. doofe Frage aber wie mach ich das? vorher habe ich via npm start im Verzeichnis /wcf/acp/be.bastelstu.wcf.nodePushausgeführt. Wenn ich den selben Befehl in dem neuen Verzeichnis eingebe erhalte ich einen ENOENT.

  • Edit: Good news everyone er startet.

    Code
    Up since: Tue Dec 16 2014 21:26:25 GMT+0100 (CET) 
    Outbound: 0 now


    ich hatte die Definition der sslOptions vor die Definition von fs geschrieben. Einziges Problem ist nun nur noch das er keine Outbound Connections hat.


    -------------------------


    Das hier müsste der gesuchte Fehlercode sein:


    Code
    /var/customers/user/path/wcf/acp/be.bastelstu.wcf.nodePush# node_modules/.bin/coffee app.coffee
    TypeError: Cannot call method 'readFileSync' of undefined
    at Object.<anonymous> (/var/customers/user/path/wcf/acp/be.bastelstu.wcf.nodePush/app.coffee:9:9)
    at Object.<anonymous> (/var/customers/user/path/wcf/acp/be.bastelstu.wcf.nodePush/app.coffee:1:1)
    at Module._compile (module.js:456:26)
  • Moin,


    nur zur Sicherheit: Als du die Seite aufgerufen hast, hattest du vorher (als nodePush bereits lief) das Forum aufgerufen und den Tab weiterhin offen, oder? :)
    Falls ja: Dann müsste die Server-Einstellung im ACP fehlerhaft sein.


    Push-Server-Host (nodePush) ist bei mir https://domain.tld:9001

    • Offizieller Beitrag

    Hi,


    könntest du mal schauen, was in deiner Browserkonsole (F12) auftaucht, wenn du dein Forum aufrufst?
    Er müsste versuchen, https://domain.tld:9001/socket.io/socket.io.js zu laden, wenn das klappt, müsste der Host im ACP richtig eingetragen sein (wovon ich aktuell aber eigentlich ausgehe).
    Ansonsten wäre vielleicht ein Link zur Seite hilfreich, um selber einmal zu gucken.