I am trying to deploy an HTTPS web side on Heroku using Golang-martini.
Here is the list I already done:
I already purchase my CA certificate key and it could be deploy Heroku. So, heroku certs
shows: (note: the company name/endpoint address change)
Endpoint || Common Name(s) || Expires || Trusted
xxx.herokussl.com || server.sample.com || 2016-05-25 23:59 UTC || True
And here is my code sample in 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)
}
Here are the my Questions:
If I set the ListenAndServeTLS
port in 8443 (or something else) it will show error when I trying to test with curl -vI https://server.sample.com
. It will show error as:
"curl: (60) SSL certificate problem: Invalid certificate chain"
If I set the ListenAndServeTLS
port to 443, it will show:
"listen tcp :443: bind: permission denied"
Please advise how I deploy HTTPs with Go-martini on Heroku, thanks..
Your app won't serve HTTPS if you are deploying to Heroku. The SSL connection will be terminated at the load balancers of Heroku and plain HTTP traffic will be forwarded to your application.
So all you have to do is to listen on HTTP on the Port from the environment.