質問編集履歴

5

参考に改修したソースを追記

2018/03/05 02:30

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -108,4 +108,34 @@
108
108
  StartAutoTLSではなく、StartTLSを利用して証明書を指定することで起動することで
109
109
  正常に https が起動できました。
110
110
  golang echo の http/2 に書いてありました。
111
- https://echo.labstack.com/cookbook/http2
111
+ https://echo.labstack.com/cookbook/http2
112
+
113
+ ソースコードは以下のようになります。
114
+ ```
115
+ package main
116
+
117
+ import (
118
+ "net/http"
119
+
120
+ "github.com/labstack/echo"
121
+ "github.com/labstack/echo/middleware"
122
+ "golang.org/x/crypto/acme/autocert"
123
+ )
124
+
125
+ func main() {
126
+ e := echo.New()
127
+ // e.AutoTLSManager.HostPolicy = autocert.HostWhitelist("<DOMAIN>")
128
+ // Cache certificates
129
+ // e.AutoTLSManager.Cache = autocert.DirCache(".cache") ←不要
130
+ println(e.AutoTLSManager.Cache)
131
+ e.Use(middleware.Recover())
132
+ e.Use(middleware.Logger())
133
+ e.GET("/", func(c echo.Context) error {
134
+ return c.HTML(http.StatusOK, `
135
+ <h1>Welcome to Echo!</h1>
136
+ <h3>TLS certificates automatically installed from Let's Encrypt :)</h3>
137
+ `)
138
+ })
139
+ e.Logger.Fatal(e.StartTLS(":9443", ".cache/ssl_ca.pem", ".cache/key.pem"))
140
+ }
141
+ ```

4

自己解決

2018/03/05 02:29

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -102,4 +102,10 @@
102
102
  $ go version
103
103
  go version go1.8.1 linux/amd64
104
104
  $ uname -a
105
- Linux hogehoge 4.9.81-35.56.amzn1.x86_64 #1 SMP Fri Feb 16 00:18:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
105
+ Linux hogehoge 4.9.81-35.56.amzn1.x86_64 #1 SMP Fri Feb 16 00:18:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
106
+
107
+ ### 自己解決
108
+ StartAutoTLSではなく、StartTLSを利用して証明書を指定することで起動することで
109
+ 正常に https が起動できました。
110
+ golang echo の http/2 に書いてありました。
111
+ https://echo.labstack.com/cookbook/http2

3

タイトルを修正

2018/03/05 01:49

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- golang echo で https を起動後に missing server name が発生
1
+ golang echo で https を起動してブラウザからアクセスすると missing server name が発生する
body CHANGED
File without changes

2

仕様について確認した点を追記

2018/03/02 07:46

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -87,6 +87,17 @@
87
87
  }
88
88
  ```
89
89
 
90
+ AutoTLSManager.Cache の仕様に以下のように書かれているので、
91
+ pem形式の SSL証明書、中間証明書、キーをソース置いてある
92
+ ディレクトリに .cache ディレクトリを作成して格納しています。
93
+ ```
94
+ Manager passes the Cache certificates data encoded in PEM,
95
+ with private/public parts combined in a single Cache.Put call, private key first.
96
+ ```
97
+ 確認した文献: https://github.com/golang/crypto/blob/master/acme/autocert/autocert.go#L92
98
+
99
+
100
+
90
101
  ### バージョン情報
91
102
  $ go version
92
103
  go version go1.8.1 linux/amd64

1

echo を利用しない方法で https を起動することは確認済み

2018/03/02 07:10

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -68,6 +68,25 @@
68
68
  証明書を格納した .cache ディレクトリの置き場所をソースと同じディレクトリにする、
69
69
  DirCache を絶対パスにするなど試しましたが、エラーの内容は変わりませんでした。
70
70
 
71
+ echo ではない以下の方法では、https を起動できることを確認しています
72
+ ```
73
+ package main
74
+
75
+ import (
76
+ "log"
77
+ "net/http"
78
+ )
79
+
80
+ func main() {
81
+
82
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
83
+ w.Write([]byte("Hello world"))
84
+ })
85
+
86
+ log.Fatal(http.ListenAndServeTLS(":9443", ".cache/2018_ssl_ca_cert_hogehoge.pem", ".cache/2018_key_hogehoge.pem", nil))
87
+ }
88
+ ```
89
+
71
90
  ### バージョン情報
72
91
  $ go version
73
92
  go version go1.8.1 linux/amd64