2016-04-17 29 views
6

Ho un'applicazione base ciao-mondo in Haskell Servant e Warp. Questo non è il codice vero e proprio, ma per ragioni di semplicità diciamo che sto usando:Haskell Warp/Wai e HTTPS - come farli funzionare?

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 

Funziona bene su un server. Con http.

Non sto usando nginx o apache, lo eseguo così com'è e a questo punto va bene per me.

Ma con https non caricherà la pagina. Ho installato il certificato https ma ho capito che dovrei in qualche modo configurare warp/wai per usarlo, perché di default non lo userà. C'è carenza di informazioni su questo - warp/wai e SSL, non ho trovato nulla. Qualcuno può aiutarmi?

risposta

7

Credo che il modo più semplice è utilizzare la libreria warp-tls - settup i tuoi file di certificato nella TLSSettings (vorrei provare tlsSettings prima) e utilizzare runTLS invece di run:

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

di sapere tutto! – Jushiti

+0

ma a warp-tls si dice "il supporto per SSL ora è obsoleto" e SSL è ciò di cui ho bisogno. – Jushiti

+0

Posso assicurarti che ne so molto poco (oltre a come inserire query in Hayoo;)) – Carsten