在 Heroku 服务器上部署 golang martini HTTPS
Deploy golang martini HTTPS on Heroku server
我正在尝试使用 Golang-martini 在 Heroku 上部署 HTTPS Web 端。
这是我已经完成的清单:
- 我已经在 Heroku 中启用了 SSL 端点。 (为付费插件服务)
我已经购买了我的 CA 证书密钥并且可以部署 Heroku。所以,heroku certs
显示:(注:公司name/endpoint地址变更)
端点||通用名称 ||过期 ||值得信赖
xxx.herokussl.com || server.sample.com || 2016-05-25 23:59 协调世界时 ||真
这是我在 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
进行测试时,它将显示错误。它将错误显示为:
"curl: (60) SSL certificate problem: Invalid certificate chain"
如果我将 ListenAndServeTLS
端口设置为 443,它将显示:
"listen tcp :443: bind: permission denied"
请告知我如何在 Heroku 上使用 Go-martini 部署 HTTPs,谢谢..
如果您要部署到 Heroku,您的应用将不会提供 HTTPS。 SSL 连接将在 Heroku 的负载平衡器处终止,纯 HTTP 流量将转发到您的应用程序。
所以你所要做的就是在来自环境的端口上监听 HTTP。
我正在尝试使用 Golang-martini 在 Heroku 上部署 HTTPS Web 端。
这是我已经完成的清单:
- 我已经在 Heroku 中启用了 SSL 端点。 (为付费插件服务)
我已经购买了我的 CA 证书密钥并且可以部署 Heroku。所以,
heroku certs
显示:(注:公司name/endpoint地址变更)
端点||通用名称 ||过期 ||值得信赖
xxx.herokussl.com || server.sample.com || 2016-05-25 23:59 协调世界时 ||真
这是我在 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
进行测试时,它将显示错误。它将错误显示为:"curl: (60) SSL certificate problem: Invalid certificate chain"
如果我将
ListenAndServeTLS
端口设置为 443,它将显示:"listen tcp :443: bind: permission denied"
请告知我如何在 Heroku 上使用 Go-martini 部署 HTTPs,谢谢..
如果您要部署到 Heroku,您的应用将不会提供 HTTPS。 SSL 连接将在 Heroku 的负载平衡器处终止,纯 HTTP 流量将转发到您的应用程序。
所以你所要做的就是在来自环境的端口上监听 HTTP。