From ad4ec6ffdbdc40aaf2f60a7e87d570b4974f239e Mon Sep 17 00:00:00 2001 From: Victor Vrantchan Date: Mon, 30 Oct 2017 08:01:03 -0400 Subject: [PATCH] create push service from TLS cert if there's no cert in the DB (#284) --- cmd/mdmctl/mdmcert.go | 2 +- serve.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cmd/mdmctl/mdmcert.go b/cmd/mdmctl/mdmcert.go index 7b445a44..5b1bd8e7 100644 --- a/cmd/mdmctl/mdmcert.go +++ b/cmd/mdmctl/mdmcert.go @@ -225,7 +225,7 @@ func (cmd *mdmcertCommand) runUpload(args []string) error { } func loadPushCerts(certPath, keyPath, keyPass string) (cert, key []byte, err error) { - isP12 := (keyPath == "" && keyPass != "") + isP12 := filepath.Ext(certPath) == ".p12" if isP12 { pkcs12Data, err := ioutil.ReadFile(certPath) if err != nil { diff --git a/serve.go b/serve.go index 34069388..dd679768 100644 --- a/serve.go +++ b/serve.go @@ -3,6 +3,7 @@ package main import ( "bytes" "context" + "crypto/tls" "crypto/x509" "encoding/base64" "encoding/pem" @@ -639,6 +640,13 @@ func (c *config) setupPushService(logger log.Logger) { var opts []nanopush.Option { cert, _ := c.configDB.PushCertificate() + if c.pushCert.Certificate != nil && cert == nil { + cert = &tls.Certificate{ + Certificate: [][]byte{c.pushCert.Certificate.Raw}, + PrivateKey: c.pushCert.PrivateKey, + Leaf: c.pushCert.Certificate, + } + } if cert == nil { goto after }