summaryrefslogtreecommitdiff
path: root/edge
diff options
context:
space:
mode:
authorLiangshuang <liangshuang889@163.com>2020-05-20 18:01:53 +0800
committerLiangshuang <liangshuang889@163.com>2020-05-21 20:01:20 +0800
commit13dface5b72853830b43a5511a4221a5c64fe99a (patch)
tree20aca432a65a88e33c73eb726c22656452384556 /edge
parentMerge pull request #1695 from fisherxu/fisherxu-patch-1 (diff)
downloadkubeedge-13dface5b72853830b43a5511a4221a5c64fe99a.tar.gz
Improve certsfunction
Diffstat (limited to 'edge')
-rw-r--r--edge/pkg/edgehub/common/certutil/certutil.go33
-rw-r--r--edge/pkg/edgehub/edgehub.go4
-rw-r--r--edge/pkg/edgehub/process.go12
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
}