2012-04-10 11 views
1

Kann mir jemand entweder 1) sagen, wie es geht, oder 2) auf eine Ressource zeigen, wie SSL mit dem Erlang Web-Framework ausgeführt/aktiviert/verwendet wird? Ich kann in keiner Dokumentation oder Online-Websuche etwas finden, und es sieht so aus, als wäre der letzte Eintrag in ihrer Mailingliste ein paar Jahre alt.Erlang Web-Framework und SSL?

Danke.

Antwort

2

Der erste Schritt zum Aktivieren von SSL in Ihrer Erlang-Webanwendung besteht in der Konfiguration des zugrunde liegenden Webservers. Zum Beispiel, wenn Sie Inets verwenden, können Sie die Datei:

config/inets_https.conf: 

Eine Beispiel-Konfigurationsdatei (mit Apache wie Syntax) wie folgt aussieht:

ServerName erlangweb_https 
ServerRoot docroot 
DocumentRoot docroot 
BindAddress 0.0.0.0 
Modules e_mod_inets 
Port 443 
SocketType ssl 
SSLCertificateFile my.cert 
SSLCertificateKeyFile my.key 
SSLVerifyClient 0 

Sie es auch so konfigurieren, dass mit " erlang“Syntax:

[{inets, [...]}]. 

Mehr Informationen über Erlang Web Server-Konfigurationsdateien an:

http://wiki.erlang-web.org/Eptic/ServerConfiguration

und speziell für Inets:

http://www.erlang.org/doc/man/httpd.html

Sobald Sie, dass an Ort und Stelle, Sie Benutzer HTTPS in Ihrer Anwendung Controller umleiten kann wie folgt (vorausgesetzt, der Server Standard-Ports verwendet) :

{redirect, "https://" ++ e_conf:host() ++ "/" ++ wpart:fget("__path")}. 

Wenn Ihr Server nicht Standard-Ports verwenden, die oben Umleitung wird:

{redirect, "https://" ++ e_conf:host() ++ ":" ++ e_conf:https_port() 
      ++ "/" ++ wpart:fget("__path")}. 

Weitere Informationen über Konfigurationsparameter in Erlang Web:

http://wiki.erlang-web.org/ProjectConf

Um Ausführlichkeit zu reduzieren, könnte man Blick auf Erlang Web annotations haben wollen.

?BEFORE. 
https(true, _Mod, _Fun, Args) -> 
    case wpart:fget("__https") of 
     false -> 
      Host = e_conf:host(), 
      Port = e_conf:https_port(), 
      Path = wpart:fget("__path"), 
      Redirect = "https://" ++ Host ++ ":" ++ Port ++ "/" ++ Path, 
      {skip, {redirect, Redirect}}; 
     true -> 
      {proceed, Args} 
    end. 

Und dann verwenden, kurz vor Ihren Controller-Funktionen zu HTTPS erzwingen:: Zum Beispiel , könnten Sie so etwas wie schreiben

?HTTPS(true). 
my_function(Args) -> 
    .... 
+0

PS: Willkommen SO. –

+0

Yup, ich hatte bereits die Konfigurationsdatei erstellt. Nur Unterschiede sind 1) Ich verwende eine Bind-Adresse von *, und 2) Ich verwende nicht die Standard-Ports). Ich habe versucht, Ihre Weiterleitung in der Steuerung. Es leitet den Browser um und dann bekomme ich einen internen Serverfehler. Alle Supervisor-Prozesse sehen aus, als kämen sie gut. Ich sehe dort keine Fehler oder Fehler. Ich benutze inets, und auch Windows (Verwendung von Windows ist nur für Entwickler, nicht Produktion). Irgendwelche Ideen? Danke. –

+0

Könnten Sie den internen Serverfehler einfügen, den Sie bekommen? –