0

我正在尝试使用Golang-martini在 Heroku 上部署 HTTPS Web 端。

这是我已经完成的清单:

  • 我已经在 Heroku 中启用了 SSL 端点。(它是付费插件服务)
  • 我已经购买了我的 CA 证书密钥,它可以部署 Heroku。所以,heroku certs显示:(注意:公司名称/端点地址更改)


    端点 || 通用名称 || 过期 || 值得信赖


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

这是我在 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)
}

这是我的问题:

  • 如果我将ListenAndServeTLS端口设置为 8443(或其他),当我尝试使用curl -vI https://server.sample.com. 它将显示错误为:

    “卷曲:(60)SSL证书问题:无效的证书链”

  • 如果我将ListenAndServeTLS端口设置为 443,它将显示:

    “监听 tcp:443:绑定:权限被拒绝”

请告知我如何在 Heroku 上使用 Go-martini 部署 HTTPS,谢谢..

4

1 回答 1

3

如果您部署到 Heroku,您的应用将不会提供 HTTPS。SSL 连接将在 Heroku 的负载均衡器处终止,纯 HTTP 流量将被转发到您的应用程序。

因此,您所要做的就是从环境中侦听端口上的 HTTP。

于 2015-05-28T08:54:02.223 回答