Haskell Warp/Wai 和 HTTPS -- 如何让它们工作?
Haskell Warp/Wai and HTTPS -- how to make them work?
我在 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,我还没有找到任何信息。谁能帮帮我?
我想最简单的方法是使用 warp-tls library - settup your certificate files in the TLSSettings
(I would try tlsSettings
first) and use runTLS
而不是 run
:
serveApp :: IO ()
serveApp = do
let tls = tlsSettings "pathToCert" "pathToKey"
runTLS tls (setPort 443 defaultSettings) app
我在 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,我还没有找到任何信息。谁能帮帮我?
我想最简单的方法是使用 warp-tls library - settup your certificate files in the TLSSettings
(I would try tlsSettings
first) and use runTLS
而不是 run
:
serveApp :: IO ()
serveApp = do
let tls = tlsSettings "pathToCert" "pathToKey"
runTLS tls (setPort 443 defaultSettings) app