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。次のようにエラーが表示されます。

    "curl: (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 に答える