diff options
| author | Liangshuang <liangshuang889@163.com> | 2020-05-20 18:01:53 +0800 |
|---|---|---|
| committer | Liangshuang <liangshuang889@163.com> | 2020-05-21 20:01:20 +0800 |
| commit | 13dface5b72853830b43a5511a4221a5c64fe99a (patch) | |
| tree | 20aca432a65a88e33c73eb726c22656452384556 /edge | |
| parent | Merge pull request #1695 from fisherxu/fisherxu-patch-1 (diff) | |
| download | kubeedge-13dface5b72853830b43a5511a4221a5c64fe99a.tar.gz | |
Improve certsfunction
Diffstat (limited to 'edge')
| -rw-r--r-- | edge/pkg/edgehub/common/certutil/certutil.go | 33 | ||||
| -rw-r--r-- | edge/pkg/edgehub/edgehub.go | 4 | ||||
| -rw-r--r-- | edge/pkg/edgehub/process.go | 12 |
3 files changed, 19 insertions, 30 deletions
diff --git a/edge/pkg/edgehub/common/certutil/certutil.go b/edge/pkg/edgehub/common/certutil/certutil.go index 82695a8fb..28fb1efe5 100644 --- a/edge/pkg/edgehub/common/certutil/certutil.go +++ b/edge/pkg/edgehub/common/certutil/certutil.go @@ -9,12 +9,11 @@ import ( "crypto/x509" "crypto/x509/pkix" "encoding/hex" - "encoding/pem" "fmt" + "io/ioutil" + "github.com/kubeedge/kubeedge/edge/pkg/edgehub/common/http" "github.com/kubeedge/kubeedge/edge/pkg/edgehub/config" - "io/ioutil" - "os" ) const privateKeyBits = 2048 @@ -22,7 +21,10 @@ const privateKeyBits = 2048 // GetCACert gets the cloudcore CA certificate func GetCACert(url string) ([]byte, error) { client := http.NewHTTPClient() - req, _ := http.BuildRequest("GET", url, nil, "") + req, err := http.BuildRequest("GET", url, nil, "") + if err != nil { + return nil, err + } res, err := http.SendRequest(req, client) if err != nil { return nil, err @@ -37,7 +39,10 @@ func GetCACert(url string) ([]byte, error) { } func getCSR() ([]byte, error) { - pk, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + pk, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + return nil, err + } // save the private key if err := WriteKey(config.Config.TLSPrivateKeyFile, pk); err != nil { return nil, err @@ -63,7 +68,10 @@ func GetEdgeCert(url string, cacert []byte, token string) ([]byte, error) { return nil, fmt.Errorf("failed to create CSR: %v", err) } client, err := http.NewHTTPclientWithCA(cacert) - req, _ := http.BuildRequest("GET", url, bytes.NewReader(csr), token) + req, err := http.BuildRequest("GET", url, bytes.NewReader(csr), token) + if err != nil { + return nil, err + } res, err := http.SendRequest(req, client) if err != nil { return nil, err @@ -77,19 +85,6 @@ func GetEdgeCert(url string, cacert []byte, token string) ([]byte, error) { return edgecert, nil } -// SaveToFile saves the certificate or private key -func SaveToFile(data []byte, file string, pemBlockType string) error { - out, err := os.Create(file) - defer out.Close() - if err != nil { - return fmt.Errorf("failed to create file: %s", file) - } - if err = pem.Encode(out, &pem.Block{Type: pemBlockType, Bytes: data}); err != nil { - return err - } - return nil -} - func hashCA(cacerts []byte) string { digest := sha256.Sum256(cacerts) return hex.EncodeToString(digest[:]) diff --git a/edge/pkg/edgehub/edgehub.go b/edge/pkg/edgehub/edgehub.go index 872234e37..d91b196b9 100644 --- a/edge/pkg/edgehub/edgehub.go +++ b/edge/pkg/edgehub/edgehub.go @@ -67,13 +67,13 @@ func (eh *EdgeHub) Start() { _, err := tls.LoadX509KeyPair(config.Config.TLSCertFile, config.Config.TLSPrivateKeyFile) if err != nil { if err := eh.applyCerts(); err != nil { - klog.Fatalf("failed to apply for edge certificate, error: %v", err) + klog.Fatalf("Error: %v", err) return } } } else { if err := eh.applyCerts(); err != nil { - klog.Fatalf("failed to apply for edge certificate, error: %v", err) + klog.Fatalf("Error: %v", err) return } } diff --git a/edge/pkg/edgehub/process.go b/edge/pkg/edgehub/process.go index 64a2234cf..8e3c29490 100644 --- a/edge/pkg/edgehub/process.go +++ b/edge/pkg/edgehub/process.go @@ -38,44 +38,38 @@ func (eh *EdgeHub) applyCerts() error { url := config.Config.HTTPServer + caURL cacert, err := certutil.GetCACert(url) if err != nil { - klog.Errorf("failed to get CA certificate, err: %v", err) return fmt.Errorf("failed to get CA certificate, err: %v", err) } // validate the CA certificate by hashcode tokenParts := strings.Split(config.Config.Token, ".") if len(tokenParts) != 4 { - return fmt.Errorf("token credentials are in the wrong format") + return fmt.Errorf("token are in the wrong format") } ok, hash, newHash := certutil.ValidateCACerts(cacert, tokenParts[0]) if !ok { - klog.Errorf("failed to validate CA certificate. tokenCAhash: %s, CAhash: %s", hash, newHash) return fmt.Errorf("failed to validate CA certificate. tokenCAhash: %s, CAhash: %s", hash, newHash) } // save the ca.crt to file ca, err := x509.ParseCertificate(cacert) if err != nil { - klog.Errorf("failed to parse the CA certificate, error: %v", err) return fmt.Errorf("failed to parse the CA certificate, error: %v", err) } if err = certutil.WriteCert(config.Config.TLSCAFile, ca); err != nil { - klog.Errorf("failed to save the CA certificate to file: %s, error: %v", config.Config.TLSCAFile, err) - return fmt.Errorf("failed to save the CA certificate to file: %s, error: %v", config.Config.TLSCAFile, err) + return fmt.Errorf("failed to save the CA certificate to local directory: %s, error: %v", config.Config.TLSCAFile, err) } // get the edge.crt url = config.Config.HTTPServer + certURL edgecert, err := certutil.GetEdgeCert(url, cacert, strings.Join(tokenParts[1:], ".")) if err != nil { - klog.Errorf("failed to get edge certificate from the cloudcore, error: %v", err) return fmt.Errorf("failed to get edge certificate from the cloudcore, error: %v", err) } // save the edge.crt to the file cert, _ := x509.ParseCertificate(edgecert) if err = certutil.WriteCert(config.Config.TLSCertFile, cert); err != nil { - klog.Errorf("failed to save the edge certificate to file: %s, error: %v", config.Config.TLSCertFile, err) - return fmt.Errorf("failed to save the edge certificate to file: %s, error: %v", config.Config.TLSCertFile, err) + return fmt.Errorf("failed to save the edge certificate to local directory: %s, error: %v", config.Config.TLSCertFile, err) } return nil } |
