HTTPS + SSL auf Heroku - Knoten + Express

8

Ich habe ein selbstsigniertes Zertifikat erstellt, hat es zu Heroku hinzugefügt und einen SSL-Endpunkt auf Heroku bereitgestellt, und ich logge heroku certs:info ein, scheint es dort zu sein.

Ich erstelle meinen Server auf Express wie folgt:

%Vor%

Und dann umleiten zu https wie folgt:

%Vor%

Der Server läuft gut, aber ich stieß auf dieses Code-Snippet auf S.O. um einen https Server zu erstellen:

%Vor%

Ich zeige nicht auf die certs / keys wie in diesem Beispiel, und meine Site läuft auf https (obwohl die Sperre rot ist, da sie selbstsigniert ist).

  • Also meine Frage ist, wie weiß mein Server über meine Schlüssel / Zertifikate, ohne dass ich explizit darauf hinweise, wie das Code-Snippet mit server_options ? Wird dies hinter den Kulissen von Heroku erledigt?

  • Wie funktioniert der SSL-Endpunkt, den ich auf Heroku eingerichtet habe, mit dem http -Server, den ich mit var server = require('http').createServer(app); erstellt habe?

BEARBEITEN

Ich antworte nur so auf einer anderen Frage :

"Die SSL-Terminierung erfolgt bei den Load Balancern von Heroku. Sie senden Ihrer App reinen (Nicht-SSL-) Traffic, sodass Ihre App einen Nicht-HTTPS-Server erstellen sollte."

  • Was bedeutet they send your app plain (non-SSL) traffic genau? Bedeutet das, dass ich nicht auf https in meiner App umleiten muss?
Ramsel 05.08.2014, 21:19
quelle

1 Antwort

22

Die SSL-Terminierung wird auf Heroku-Servern / Load-Balancern durchgeführt, bevor der Datenverkehr zu Ihrer Anwendung gelangt. Das "Ding", dem Sie Ihr Zertifikat hinzugefügt haben, war nicht Ihr Prüfstand, sondern ein von Heroku gesteuerter Server.

Wenn also SSL-Verkehr (https) eingeht, wird er auf dem Server "gestoppt" (beendet). Dieser Server öffnet eine neue Ссылка Verbindung zu Ihrem Dyno, und was auch immer es bekommt, sendet sie über https zurück an den Client.

Sie müssen also auf Ihrem Prüfstand nicht mit Zertifikaten "herumhantieren", und Sie werden nur eingehenden Ссылка Datenverkehr sehen: ob direkt von http-Clients oder von Heroku-Servern, die https sprechen an Kunden und http an Sie.

Die Umleitung zu https ist eine andere Sache: Wenn ein Client mit http zu Ihrer App "kommt", und Sie bevorzugen, dass sie https verwenden, auf jeden Fall Redirect. Sie werden eine neue Anfrage stellen, dieses Mal https, und gehen Sie durch Herokus SSL-Kündigung und dann zu Ihrer App. Aber jetzt wissen Sie, dass der Pfad zwischen dem Client und Heroku sicher ist (weil der Client https verwendet) und der Pfad zwischen dem Heroku SSL-Abschluss und Ihrem Dyno vermutlich sicher ist (wenn Sie Heroku vertrauen ...)

HTH

    
Nitzan Shaked 06.08.2014, 18:50
quelle

Tags und Links