2015-05-28 24 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进行核对。 –