2017-04-14 6 views
0

Ich habe eine Ruby-Web-Anwendung mit Sinatra, Rack und Puma gebaut. Ich verwende Sinatra, um die Controller (MVC-Muster) zu implementieren, die jeweils eine andere Route handhaben, und jede Controller-Klasse erweitert sich um . Ich möchte TLS aktivieren, sodass alle Verbindungen zum Server über HTTPS bereitgestellt werden.Aktivieren von HTTPS mit Rack, Puma und Sinatra?

Mein Rack-config.ru wie folgt aussieht:

require 'sinatra' 
require 'rack' 

# Start my database ... 

run Rack::URLMap.new(
    '/api/foo' => FooController.new, 
    '/api/bar' => BarController.new 
) 

Puma von Rack-automatisch aufgenommen wird.

Wie aktiviere ich HTTPS? Zu Beginn verwende ich gerne ein selbstsigniertes Zertifikat, aber wie kann ich den Server mit einem gültigen Zertifikat konfigurieren? Nichts davon scheint überhaupt gut dokumentiert zu sein, was ich ziemlich frustrierend finde. Überschreite ich eine Option, die ich einfach auf der obersten Ebene in meiner Rack-Konfigurationsdatei einstellen kann, etwas wie set :ssl => true vielleicht?

Ähnliche noch fruchtlos SO-Beiträge: How to make Sinatra work over HTTPS/SSL? How to enable SSL for a standalone Sinatra app?

+0

Sie möchten SSL ohne Nginx oder Apache Webserver aktivieren? –

Antwort

0

Da Sie erwähnt, dass Sie Puma verwenden, können Sie diese in ihre docs finden:

ein bisschen Sicherheit nötig? Verwenden Sie SSL-Sockets!

$ puma -b 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert' 

In Produktionsimplementierungen einen dedizierten Load Balancer (z nginx, HAProxy, AWS ELB) für SSL-Terminierung in der Regel verantwortlich ist, und leitet Plain-HTTP-Traffic auf Applikationsservern über das interne Netzwerk. Diese Heavy-Duty-Webserver sind in der Regel viel schneller, stabiler und besser auditiert.

Verwandte Themen