【发布时间】:2012-04-10 18:46:37
【问题描述】:
谁能 1) 告诉我该怎么做,或者 2) 向我指出如何在 Erlang Web 框架中运行/启用/使用 SSL 的资源?我在任何文档或在线网络搜索中都找不到任何内容,而且他们邮件列表中的最后一篇帖子似乎已经有几年了。
谢谢。
【问题讨论】:
标签: ssl frameworks erlang
谁能 1) 告诉我该怎么做,或者 2) 向我指出如何在 Erlang Web 框架中运行/启用/使用 SSL 的资源?我在任何文档或在线网络搜索中都找不到任何内容,而且他们邮件列表中的最后一篇帖子似乎已经有几年了。
谢谢。
【问题讨论】:
标签: ssl frameworks erlang
在您的 Erlang Web 应用程序中启用 SSL 的第一步是配置底层 Web 服务器。例如,如果您使用的是 Inets,则可以使用该文件:
config/inets_https.conf:
一个示例配置文件(使用类似 Apache 的语法)如下所示:
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
您也可以使用“erlang”语法对其进行配置:
[{inets, [...]}].
有关 Erlang Web 服务器配置文件的更多信息,请访问:
http://wiki.erlang-web.org/Eptic/ServerConfiguration
特别是对于 Inets:
http://www.erlang.org/doc/man/httpd.html
一旦你准备好了,你就可以在你的应用程序控制器中将用户重定向到 HTTPS,如下所示(假设服务器使用默认端口):
{redirect, "https://" ++ e_conf:host() ++ "/" ++ wpart:fget("__path")}.
如果你的服务器没有使用默认端口,上面的重定向变成:
{redirect, "https://" ++ e_conf:host() ++ ":" ++ e_conf:https_port()
++ "/" ++ wpart:fget("__path")}.
有关 Erlang Web 中配置参数的更多信息:
http://wiki.erlang-web.org/ProjectConf
为了减少冗长,您可能希望查看Erlang Web annotations。例如 ,你可以这样写:
?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.
然后在您的控制器功能强制使用 HTTPS 之前使用它:
?HTTPS(true).
my_function(Args) ->
....
【讨论】: