func writeCerts(generateServer bool, hostname []string, cfg *config.CloudConfig, certPath, keyPath, caCertPath, caKeyPath string) error { if !generateServer { return machineUtil.GenerateCert([]string{""}, certPath, keyPath, caCertPath, caKeyPath, NAME, BITS) } if cfg.Rancher.Docker.ServerKey == "" || cfg.Rancher.Docker.ServerCert == "" { err := machineUtil.GenerateCert(hostname, certPath, keyPath, caCertPath, caKeyPath, NAME, BITS) if err != nil { return err } cert, err := ioutil.ReadFile(certPath) if err != nil { return err } key, err := ioutil.ReadFile(keyPath) if err != nil { return err } cfg, err = cfg.Merge(map[interface{}]interface{}{ "rancher": map[interface{}]interface{}{ "docker": map[interface{}]interface{}{ "ca_key": cfg.Rancher.Docker.CAKey, "ca_cert": cfg.Rancher.Docker.CACert, "server_cert": string(cert), "server_key": string(key), }, }, }) if err != nil { return err } return cfg.Save() } if err := ioutil.WriteFile(certPath, []byte(cfg.Rancher.Docker.ServerCert), 0400); err != nil { return err } return ioutil.WriteFile(keyPath, []byte(cfg.Rancher.Docker.ServerKey), 0400) }
func writeCaCerts(cfg *config.CloudConfig, caCertPath, caKeyPath string) (*config.CloudConfig, error) { if cfg.Rancher.Docker.CACert == "" { if err := machineUtil.GenerateCACertificate(caCertPath, caKeyPath, NAME, BITS); err != nil { return nil, err } caCert, err := ioutil.ReadFile(caCertPath) if err != nil { return nil, err } caKey, err := ioutil.ReadFile(caKeyPath) if err != nil { return nil, err } cfg, err = cfg.Merge(map[interface{}]interface{}{ "rancher": map[interface{}]interface{}{ "docker": map[interface{}]interface{}{ "ca_key": string(caKey), "ca_cert": string(caCert), }, }, }) if err != nil { return nil, err } if err = cfg.Save(); err != nil { return nil, err } return cfg, nil // caCertPath, caKeyPath are already written to by machineUtil.GenerateCACertificate() } if err := ioutil.WriteFile(caCertPath, []byte(cfg.Rancher.Docker.CACert), 0400); err != nil { return nil, err } if err := ioutil.WriteFile(caKeyPath, []byte(cfg.Rancher.Docker.CAKey), 0400); err != nil { return nil, err } return cfg, nil }