2015-05-28 23 views
0

我想用Golang-martini在Heroku上部署HTTPS Web端。在Heroku服務器上部署golang martini HTTPS

這裏是我已經做了列表:

  • 我已經能夠在Heroku的SSL端點。 (它是付費插件服務)
  • 我已經購買了我的CA證書密鑰,它可以部署Heroku。所以,heroku certs顯示:(注:公司名稱/端點地址變更)


    端點||通用名稱||過期||可信


    xxx.herokussl.com || server.sample.com || 2016-05-25 23:59 UTC || True

這裏是我在Golang的代碼示例。

m := martini.Classic() 
martini.Env = martini.Prod 
m.Use(secure.Secure(secure.Options{ 
    SSLRedirect: false, 
})) 


//Because I want to keep HTTP and HTTPs enable. 
go func() { 
    if err := http.ListenAndServe(":"+os.Getenv("PORT"), m); err != nil { 
     log.Println(err) 
    } 
}() 

// HTTPS: 
if err := http.ListenAndServeTLS(":443", "server.crt", "server.key", m); err != nil { 
    log.Println(err) 
} 

這裏是我的問題:

  • 如果我在8443(或別的東西)設置ListenAndServeTLS端口,它會顯示錯誤,當我試圖用curl -vI https://server.sample.com測試。它會顯示錯誤爲:

    「捲曲:(60)SSL證書的問題:無效的證書鏈」

  • 如果我設置ListenAndServeTLS端口443,它會顯示:

    「聽TCP: 443:綁定:權限被拒絕」

請告訴我如何部署的HTTPS在Heroku上的Go-馬提尼,感謝..

回答

3

您的應用程序不會SERV如果您正在部署到Heroku,請使用HTTPS。 SSL連接將在Heroku的負載均衡器處終止,純HTTP流量將被轉發到您的應用程序。

所以你所要做的就是在環境中監聽端口上的HTTP。

+0

嗨inf,謝謝你的回覆。但是我發現它在Heroku的Rails中運行良好。 http://readysteadycode.com/howto-setup-ssl-with-rails-and-heroku –

+0

@EvanLin我對Rails沒有經驗,但我想所有的設置都是將http請求重定向到https並設置HSTS加上也許一些其他的東西。 – inf

+0

謝謝,如果它是真的,我會與Heroku進行覈對。 –