質問編集履歴
5
参考に改修したソースを追記
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
自己解決
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
タイトルを修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
golang echo で https を起動
|
1
|
+
golang echo で https を起動してブラウザからアクセスすると missing server name が発生する
|
body
CHANGED
File without changes
|
2
仕様について確認した点を追記
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 を起動することは確認済み
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
|