2017-04-14 2 views
0

J'ai une application Web Ruby construite avec Sinatra, Rack et Puma. J'utilise Sinatra pour implémenter les contrôleurs (modèle MVC), chacun gérant une route différente, et chaque classe de contrôleur étend Sinatra::Base. Je voudrais activer TLS afin que toutes les connexions au serveur soient servies via HTTPS.Activation de HTTPS avec Rack, Puma et Sinatra?

Mon rack config.ru ressemble:

require 'sinatra' 
require 'rack' 

# Start my database ... 

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

Puma récupère automatiquement par rack.

Comment activer HTTPS? Pour commencer, je suis heureux d'utiliser un certificat auto-signé, mais comment puis-je configurer le serveur avec un certificat valide? Rien de tout cela ne semble bien documenté, ce que je trouve très frustrant. Suis-je en train de négliger une option que je peux juste définir au niveau supérieur dans mon fichier de configuration Rack, quelque chose comme set :ssl => true peut-être?

encore stériles SO Articles similaires: How to make Sinatra work over HTTPS/SSL? How to enable SSL for a standalone Sinatra app?

+0

Vous souhaitez activer ssl sans serveur web Nginx ou Apache? –

Répondre

0

Puisque vous avez mentionné que vous utilisez Puma, vous pouvez trouver dans leurs documents:

besoin d'un peu de sécurité? Utilisez les sockets SSL!

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

Dans les déploiements production un équilibreur de charge dédié (par exemple nginx, HAProxy, AWS ELB) est généralement responsable de la terminaison SSL, et en avant simple trafic HTTP vers des serveurs d'applications sur le réseau interne. Ces serveurs Web lourds sont généralement beaucoup plus rapides, plus stables et mieux audités.