Haskell Warp/Wai和HTTPS - 如何使它们工作?

Jus*_*iti 10 ssl https haskell haskell-warp

我在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
Run Code Online (Sandbox Code Playgroud)

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

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

但是使用https它不会加载页面.我已经安装了https证书,但我收集到了我应该以某种方式设置warp/wai来使用它,因为默认情况下它不会使用它.关于这个的信息很少 - warp/wai和SSL,我还没有发现任何东西.谁能帮助我?

Car*_*ten 10

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

serveApp :: IO ()
serveApp = do
   let tls = tlsSettings "pathToCert" "pathToKey"
   runTLS tls (setPort 443 defaultSettings) app
Run Code Online (Sandbox Code Playgroud)