From 0e6b60a2c4d75f454dc5344c59d911ab068839ef Mon Sep 17 00:00:00 2001 From: Joshua Liebow-Feeser Date: Tue, 29 Aug 2017 12:41:33 -0700 Subject: [PATCH] cmd/stealchain-server: Present server cert, request client cert --- cmd/stealchain-server/main.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/cmd/stealchain-server/main.go b/cmd/stealchain-server/main.go index 5d4738d..063a369 100644 --- a/cmd/stealchain-server/main.go +++ b/cmd/stealchain-server/main.go @@ -18,16 +18,34 @@ import ( func main() { cfg := &tls.Config{} - var sysRoot, listenAddr string + var sysRoot, listenAddr, certFile, keyFile string var verify bool flag.StringVar(&sysRoot, "ca", "", "provide an alternate CA bundle") flag.StringVar(&listenAddr, "listen", ":443", "address to listen on") + flag.StringVar(&certFile, "cert", "", "server certificate to present to clients") + flag.StringVar(&keyFile, "key", "", "key for server certificate") flag.BoolVar(&verify, "verify", false, "verify client certificates") flag.Parse() if verify { cfg.ClientAuth = tls.RequireAndVerifyClientCert + } else { + cfg.ClientAuth = tls.RequestClientCert } + if certFile == "" { + fmt.Println("[!] missing required flag -cert") + os.Exit(1) + } + if keyFile == "" { + fmt.Println("[!] missing required flag -key") + os.Exit(1) + } + cert, err := tls.LoadX509KeyPair(certFile, keyFile) + if err != nil { + fmt.Printf("[!] could not load server key pair: %v", err) + os.Exit(1) + } + cfg.Certificates = append(cfg.Certificates, cert) if sysRoot != "" { pemList, err := ioutil.ReadFile(sysRoot) die.If(err)