Allow self-signed certificates with configuration option in mdmctl (#147)

This commit is contained in:
Jesse Peterson
2017-04-26 09:36:34 -07:00
committed by GitHub
parent 93a8b481e0
commit 2d90d3b69b
5 changed files with 32 additions and 8 deletions

View File

@@ -10,6 +10,7 @@ import (
"strings"
"github.com/go-kit/kit/log"
httptransport "github.com/go-kit/kit/transport/http"
"github.com/micromdm/micromdm/core/apply"
)
@@ -25,7 +26,7 @@ func (cmd *applyCommand) setup() error {
}
cmd.config = cfg
logger := log.NewLogfmtLogger(os.Stderr)
applysvc, err := apply.NewClient(cfg.ServerURL, logger, cfg.APIToken)
applysvc, err := apply.NewClient(cfg.ServerURL, logger, cfg.APIToken, httptransport.SetClient(skipVerifyHTTPClient(cmd.config.SkipVerify)))
if err != nil {
return err
}

View File

@@ -10,12 +10,26 @@ import (
"os/user"
"path/filepath"
"strings"
"crypto/tls"
"net/http"
)
type configCommand struct {
config *ClientConfig
}
// skipVerifyHTTPClient returns an *http.Client with InsecureSkipVerify set
// to true for its TLS config. This allows self-signed SSL certificates.
func skipVerifyHTTPClient(skipVerify bool) *http.Client {
if skipVerify {
tlsConfig := &tls.Config{InsecureSkipVerify: true}
transport := &http.Transport{TLSClientConfig: tlsConfig}
return &http.Client{Transport: transport}
}
return http.DefaultClient
}
func (cmd *configCommand) Run(args []string) error {
if len(args) < 1 {
cmd.Usage()
@@ -51,8 +65,9 @@ mdmctl config set -h
func setCmd(cfg *ClientConfig, args []string) error {
flagset := flag.NewFlagSet("set", flag.ExitOnError)
var (
flToken = flagset.String("api-token", "", "api token to connect to micromdm server")
flServerURL = flagset.String("server-url", "", "server url of micromdm server")
flToken = flagset.String("api-token", "", "api token to connect to micromdm server")
flServerURL = flagset.String("server-url", "", "server url of micromdm server")
flSkipVerify = flagset.Bool("skip-verify", false, "skip verification of server certificate (insecure)")
)
flagset.Usage = usageFor(flagset, "mdmctl config set [flags]")
@@ -78,6 +93,8 @@ func setCmd(cfg *ClientConfig, args []string) error {
cfg.ServerURL = u.String()
}
cfg.SkipVerify = *flSkipVerify
return SaveClientConfig(cfg)
}
@@ -131,6 +148,7 @@ func LoadClientConfig() (*ClientConfig, error) {
}
type ClientConfig struct {
APIToken string `json:"api_token"`
ServerURL string `json:"server_url"`
APIToken string `json:"api_token"`
ServerURL string `json:"server_url"`
SkipVerify bool `json:"skip_verify"`
}

View File

@@ -13,6 +13,7 @@ import (
"encoding/pem"
"github.com/go-kit/kit/log"
httptransport "github.com/go-kit/kit/transport/http"
"github.com/micromdm/micromdm/core/list"
)
@@ -28,7 +29,7 @@ func (cmd *getCommand) setup() error {
}
cmd.config = cfg
logger := log.NewLogfmtLogger(os.Stderr)
listsvc, err := list.NewClient(cfg.ServerURL, logger, cfg.APIToken)
listsvc, err := list.NewClient(cfg.ServerURL, logger, cfg.APIToken, httptransport.SetClient(skipVerifyHTTPClient(cmd.config.SkipVerify)))
if err != nil {
return err
}

View File

@@ -10,7 +10,7 @@ import (
httptransport "github.com/go-kit/kit/transport/http"
)
func NewClient(instance string, logger log.Logger, token string) (Service, error) {
func NewClient(instance string, logger log.Logger, token string, opts ...httptransport.ClientOption) (Service, error) {
u, err := url.Parse(instance)
if err != nil {
return nil, err
@@ -23,6 +23,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
copyURL(u, "/v1/blueprints"),
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
DecodeBlueprintRequest,
opts...,
).Endpoint()
}
var applyDEPTokensEndpoint endpoint.Endpoint
@@ -32,6 +33,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
copyURL(u, "/v1/dep-tokens"),
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
DecodeDEPTokensRequest,
opts...,
).Endpoint()
}

View File

@@ -10,7 +10,7 @@ import (
httptransport "github.com/go-kit/kit/transport/http"
)
func NewClient(instance string, logger log.Logger, token string) (Service, error) {
func NewClient(instance string, logger log.Logger, token string, opts ...httptransport.ClientOption) (Service, error) {
u, err := url.Parse(instance)
if err != nil {
return nil, err
@@ -23,6 +23,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
copyURL(u, "/v1/devices"),
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
DecodeDevicesResponse,
opts...,
).Endpoint()
}
var getDEPTokensEndpoint endpoint.Endpoint
@@ -32,6 +33,7 @@ func NewClient(instance string, logger log.Logger, token string) (Service, error
copyURL(u, "/v1/dep-tokens"),
encodeRequestWithToken(token, EncodeHTTPGenericRequest),
DecodeGetDEPTokensResponse,
opts...,
).Endpoint()
}