func configFromFile(fpath string) (*Config, error) { b, err := ioutil.ReadFile(fpath) if err != nil { return nil, err } yc := &yamlConfig{} err = yaml.Unmarshal(b, yc) if err != nil { return nil, err } cfg := &Config{ Endpoints: yc.Endpoints, AutoSyncInterval: yc.AutoSyncInterval, DialTimeout: yc.DialTimeout, } if yc.InsecureTransport { cfg.TLS = nil return cfg, nil } var ( cert *tls.Certificate cp *x509.CertPool ) if yc.Certfile != "" && yc.Keyfile != "" { cert, err = tlsutil.NewCert(yc.Certfile, yc.Keyfile, nil) if err != nil { return nil, err } } if yc.CAfile != "" { cp, err = tlsutil.NewCertPool([]string{yc.CAfile}) if err != nil { return nil, err } } tlscfg := &tls.Config{ MinVersion: tls.VersionTLS10, InsecureSkipVerify: yc.InsecureSkipTLSVerify, RootCAs: cp, } if cert != nil { tlscfg.Certificates = []tls.Certificate{*cert} } cfg.TLS = tlscfg return cfg, nil }
func (info TLSInfo) baseConfig() (*tls.Config, error) { if info.KeyFile == "" || info.CertFile == "" { return nil, fmt.Errorf("KeyFile and CertFile must both be present[key: %v, cert: %v]", info.KeyFile, info.CertFile) } tlsCert, err := tlsutil.NewCert(info.CertFile, info.KeyFile, info.parseFunc) if err != nil { return nil, err } cfg := &tls.Config{ Certificates: []tls.Certificate{*tlsCert}, MinVersion: tls.VersionTLS12, } return cfg, nil }