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) ->
....
PS: Willkommen SO. –
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. –
Könnten Sie den internen Serverfehler einfügen, den Sie bekommen? –