mirror of
https://github.com/labstack/echo.git
synced 2025-01-12 01:22:21 +02:00
parent
73110004ef
commit
8d504c1b69
15
echo.go
15
echo.go
@ -52,8 +52,8 @@ import (
|
||||
|
||||
"github.com/labstack/gommon/color"
|
||||
glog "github.com/labstack/gommon/log"
|
||||
"github.com/rsc/letsencrypt"
|
||||
"github.com/tylerb/graceful"
|
||||
"golang.org/x/crypto/acme/autocert"
|
||||
)
|
||||
|
||||
type (
|
||||
@ -64,12 +64,12 @@ type (
|
||||
HTTPErrorHandler
|
||||
Binder Binder
|
||||
Renderer Renderer
|
||||
AutoTLSManager autocert.Manager
|
||||
ShutdownTimeout time.Duration
|
||||
Color *color.Color
|
||||
Logger Logger
|
||||
server *graceful.Server
|
||||
tlsServer *graceful.Server
|
||||
tlsManager letsencrypt.Manager
|
||||
premiddleware []MiddlewareFunc
|
||||
middleware []MiddlewareFunc
|
||||
maxParam *int
|
||||
@ -236,6 +236,9 @@ var (
|
||||
// New creates an instance of Echo.
|
||||
func New() (e *Echo) {
|
||||
e = &Echo{
|
||||
AutoTLSManager: autocert.Manager{
|
||||
Prompt: autocert.AcceptTOS,
|
||||
},
|
||||
ShutdownTimeout: 15 * time.Second,
|
||||
Logger: glog.New("echo"),
|
||||
maxParam: new(int),
|
||||
@ -520,13 +523,9 @@ func (e *Echo) StartTLS(address string, certFile, keyFile string) (err error) {
|
||||
}
|
||||
|
||||
// StartAutoTLS starts the HTTPS server using certificates automatically from https://letsencrypt.org.
|
||||
func (e *Echo) StartAutoTLS(address string, hosts []string, cacheFile string) (err error) {
|
||||
func (e *Echo) StartAutoTLS(address string) error {
|
||||
config := new(tls.Config)
|
||||
config.GetCertificate = e.tlsManager.GetCertificate
|
||||
e.tlsManager.SetHosts(hosts) // Added security
|
||||
if err = e.tlsManager.CacheFile(cacheFile); err != nil {
|
||||
return
|
||||
}
|
||||
config.GetCertificate = e.AutoTLSManager.GetCertificate
|
||||
return e.startTLS(address, config)
|
||||
}
|
||||
|
||||
|
52
glide.lock
generated
52
glide.lock
generated
@ -1,65 +1,54 @@
|
||||
hash: d63c27ff06a540317f63f231ada71f3d03f1c09e79a2c47b29b43c654903fc8b
|
||||
updated: 2016-11-21T19:12:16.622618752-08:00
|
||||
hash: c3a41d26c94d8101a2aeaea5bc438cb75c5e9b7bd80850c7ec806c00c535d1c7
|
||||
updated: 2016-12-02T08:49:24.85691-08:00
|
||||
imports:
|
||||
- name: github.com/daaku/go.zipexe
|
||||
version: a5fe2436ffcb3236e175e5149162b41cd28bd27d
|
||||
- name: github.com/dgrijalva/jwt-go
|
||||
version: 24c63f56522a87ec5339cc3567883f1039378fdb
|
||||
version: 9ed569b5d1ac936e6494082958d63a6aa4fff99a
|
||||
- name: github.com/GeertJohan/go.rice
|
||||
version: 9fdfd46f9806a9228aae341d65ab75c5235c383c
|
||||
subpackages:
|
||||
- embedded
|
||||
- name: github.com/golang/protobuf
|
||||
version: 98fa357170587e470c5f27d3c3ea0947b71eb455
|
||||
version: 8ee79997227bf9b34611aee7946ae64735e6fd93
|
||||
subpackages:
|
||||
- proto
|
||||
- name: github.com/gorilla/websocket
|
||||
version: 0b847f2facc24ec406130a05bb1bb72d41993b05
|
||||
version: e8f0f8aaa98dfb6586cbdf2978d511e3199a960a
|
||||
- name: github.com/kardianos/osext
|
||||
version: c2c54e542fb797ad986b31721e1baedf214ca413
|
||||
- name: github.com/labstack/gommon
|
||||
version: 2d272df536d051e737aea353b86c979d6e88bce0
|
||||
version: 447fe7433567c785af957e549aadae2bf2000071
|
||||
subpackages:
|
||||
- bytes
|
||||
- color
|
||||
- log
|
||||
- random
|
||||
- name: github.com/mattn/go-colorable
|
||||
version: 6c903ff4aa50920ca86087a280590b36b3152b9c
|
||||
version: d228849504861217f796da67fae4f6e347643f15
|
||||
- name: github.com/mattn/go-isatty
|
||||
version: 66b8e73f3f5cda9f96b69efd03dd3d7fc4a5cdb8
|
||||
- name: github.com/miekg/dns
|
||||
version: 58f52c57ce9df13460ac68200cef30a008b9c468
|
||||
- name: github.com/rsc/letsencrypt
|
||||
version: 76104d26167d38b6a0010f42bfc8ec5487742e8b
|
||||
version: 30a891c33c7cde7b02a981314b4228ec99380cca
|
||||
- name: github.com/tylerb/graceful
|
||||
version: 50a48b6e73fcc75b45e22c05b79629a67c79e938
|
||||
version: 4df1190835320af7076dfcf27b3d071fd3612caf
|
||||
- name: github.com/valyala/fasttemplate
|
||||
version: 3b874956e03f1636d171bda64b130f9135f42cff
|
||||
- name: github.com/xenolf/lego
|
||||
version: 4bb8bea031eb805f361c04ca222f266b9e7feced
|
||||
- name: golang.org/x/crypto
|
||||
version: 8a549a1948fc5271eb24f36dcb0d3b47dec75a16
|
||||
subpackages:
|
||||
- acme
|
||||
- name: golang.org/x/crypto
|
||||
version: ca7e7f10cb9fd9c1a6ff7f60436c086d73714180
|
||||
subpackages:
|
||||
- ocsp
|
||||
- acme/autocert
|
||||
- name: golang.org/x/net
|
||||
version: 65dfc08770ce66f74becfdff5f8ab01caef4e946
|
||||
version: 97edce0b2e423f6a8debb459af47f4a3cb4ff954
|
||||
subpackages:
|
||||
- context
|
||||
- publicsuffix
|
||||
- context/ctxhttp
|
||||
- websocket
|
||||
- name: golang.org/x/sys
|
||||
version: c200b10b5d5e122be351b67af224adc6128af5bf
|
||||
version: ca83bd2cb9abb47839b50eb4da612f00158f5870
|
||||
subpackages:
|
||||
- unix
|
||||
- name: golang.org/x/time
|
||||
version: 711ca1cb87636abec28122ef3bc6a77269d433f3
|
||||
subpackages:
|
||||
- rate
|
||||
- name: google.golang.org/appengine
|
||||
version: 5b8c3b819891014a2d12354528f7d046dd53c89e
|
||||
version: ca59ef35f409df61fa4a5f8290ff289b37eccfb8
|
||||
subpackages:
|
||||
- internal
|
||||
- internal/app_identity
|
||||
@ -68,14 +57,9 @@ imports:
|
||||
- internal/log
|
||||
- internal/modules
|
||||
- internal/remote_api
|
||||
- name: gopkg.in/square/go-jose.v1
|
||||
version: aa2e30fdd1fe9dd3394119af66451ae790d50e0d
|
||||
subpackages:
|
||||
- cipher
|
||||
- json
|
||||
testImports:
|
||||
- name: github.com/davecgh/go-spew
|
||||
version: 6d212800a42e8ab5c146b8ace3490ee17e5225f9
|
||||
version: 04cdfd42973bb9c8589fd6a731800cf222fde1a9
|
||||
subpackages:
|
||||
- spew
|
||||
- name: github.com/pmezard/go-difflib
|
||||
@ -83,6 +67,6 @@ testImports:
|
||||
subpackages:
|
||||
- difflib
|
||||
- name: github.com/stretchr/testify
|
||||
version: 976c720a22c8eb4eb6a0b4348ad85ad12491a506
|
||||
version: 18a02ba4a312f95da08ff4cfc0055750ce50ae9e
|
||||
subpackages:
|
||||
- assert
|
||||
|
@ -10,9 +10,11 @@ import:
|
||||
- log
|
||||
- random
|
||||
- package: github.com/mattn/go-isatty
|
||||
- package: github.com/rsc/letsencrypt
|
||||
- package: github.com/tylerb/graceful
|
||||
- package: github.com/valyala/fasttemplate
|
||||
- package: golang.org/x/crypto
|
||||
subpackages:
|
||||
- acme/autocert
|
||||
- package: golang.org/x/net
|
||||
subpackages:
|
||||
- websocket
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
|
||||
func main() {
|
||||
e := echo.New()
|
||||
// e.AutoTLSManager.HostPolicy = autocert.HostWhitelist("<your_domain>")
|
||||
e.Use(middleware.Recover())
|
||||
e.Use(middleware.Logger())
|
||||
e.GET("/", func(c echo.Context) error {
|
||||
@ -17,5 +18,5 @@ func main() {
|
||||
<h3>TLS certificates automatically installed from Let's Encrypt :)</h3>
|
||||
`)
|
||||
})
|
||||
e.StartAutoTLS(":443", []string{"<your_domain>"}, "le.cache")
|
||||
e.StartAutoTLS(":443")
|
||||
}
|
||||
|
@ -8,13 +8,14 @@ description = "Automatic TLS certificates from Let's Encrypt example for Echo"
|
||||
+++
|
||||
|
||||
This recipe shows how to obtain TLS certificates for a domain automatically from
|
||||
Let's Encrypt. `Echo#StartAutoTLS` accepts address which should listen on port `443`,
|
||||
list of host names for security and a file path to cache the certificates.
|
||||
Let's Encrypt. `Echo#StartAutoTLS` accepts an address which should listen on port `443`.
|
||||
|
||||
Browse to https://<your_domain>. If everything goes fine, you should see a welcome
|
||||
Browse to `https://<your_domain>`. If everything goes fine, you should see a welcome
|
||||
message with TLS enabled on the website.
|
||||
|
||||
> To redirect HTTP traffic to HTTPS, you can use [redirect middleware](/middleware/redirect#https-redirect)
|
||||
>
|
||||
- For added security you should specify host policy in auto TLS manage
|
||||
- To redirect HTTP traffic to HTTPS, you can use [redirect middleware](/middleware/redirect#https-redirect)
|
||||
|
||||
## Server
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user