【问题标题】:Haskell Warp/Wai and HTTPS -- how to make them work?Haskell Warp/Wai 和 HTTPS——如何让它们工作?
【发布时间】:2018-01-21 21:52:08
【问题描述】:

我在 Haskell Servant 和 Warp 中有一个基本的 hello-world 应用程序。这不是真正的代码,但为了简单起见,假设我正在使用它:

import Network.Wai
import Network.Wai.Handler.Warp
import Servant


personAPI :: Proxy PersonAPI
personAPI = Proxy

server :: Server PersonAPI
server = return people

app :: Application
app = serve personAPI server

serveApp :: IO ()
serveApp = run 80 app

它在服务器上运行良好。用http。

我没有使用 nginx 或 apache,我按原样运行它,此时对我来说没问题。

但是使用 https 它不会加载页面。我已经安装了 https 证书,但我认为我应该以某种方式设置 warp/wai 来使用它,因为默认情况下它不会使用它。缺少这方面的信息——warp/wai 和 SSL,我什么也没找到。有人可以帮我吗?

【问题讨论】:

    标签: haskell ssl https haskell-warp


    【解决方案1】:

    我想最简单的方法是使用warp-tls 库 - 在TLSSettings 中设置您的证书文件(我会先尝试tlsSettings)并使用runTLS 而不是run

    serveApp :: IO ()
    serveApp = do
       let tls = tlsSettings "pathToCert" "pathToKey"
       runTLS tls (setPort 443 defaultSettings) app
    

    【讨论】:

    • 你什么都知道!
    • 但在 warp-tls 中显示“对 SSL 的支持现在已过时。”而 SSL 正是我所需要的。
    • 我可以向你保证,我知道的很少(除了如何在 Hayoo 中输入查询;))
    • 我以前从未听说过 Hayoo,那不是我。
    • 我环顾了一下,我认为包中的注释有点误导:yesodweb.com/blog/2015/07/http2(如果我理解正确,这意味着当前浏览器将在标头上建立 TLS,所以你可能不'不再需要开放的 443 端口并且可以使用 80(?) - 正如我所说:我不是这方面的专家)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2015-11-11
    相关资源
    最近更新 更多