mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 01:18:42 +00:00
feat: use randomly generated key in fleetctl preview
This commit is contained in:
parent
c808588e1b
commit
988c085f0a
1 changed files with 44 additions and 0 deletions
|
|
@ -2,7 +2,9 @@ package main
|
|||
|
||||
import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"crypto/tls"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
|
|
@ -215,6 +217,48 @@ Use the stop and reset subcommands to manage the server and dependencies once st
|
|||
}
|
||||
}
|
||||
|
||||
generatePrivateKey := func(n int) (string, error) {
|
||||
bytes := make([]byte, n/2)
|
||||
if _, err := rand.Read(bytes); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return hex.EncodeToString(bytes)[:n], nil
|
||||
}
|
||||
|
||||
// Create a random private key for MDM asset encryption and save it to the filesystem
|
||||
// for use in subsequent runs. If one already exists, use that one.
|
||||
var pk string
|
||||
pkFilename := filepath.Join(previewDir, ".private_key")
|
||||
_, err = os.Stat(pkFilename)
|
||||
if err != nil {
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
pk, err := generatePrivateKey(32) // use AES-256
|
||||
if err != nil {
|
||||
return fmt.Errorf("generating private key: %w", err)
|
||||
}
|
||||
|
||||
if err := os.WriteFile(filepath.Join(previewDir, ".private_key"), []byte(pk), os.ModeAppend); err != nil {
|
||||
return fmt.Errorf("writing private key file: %w", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return fmt.Errorf("stat private key file: %w", err)
|
||||
}
|
||||
|
||||
if len(pk) == 0 {
|
||||
filePK, err := os.ReadFile(pkFilename)
|
||||
if err != nil {
|
||||
return fmt.Errorf("reading private key file: %w", err)
|
||||
}
|
||||
|
||||
pk = string(filePK)
|
||||
}
|
||||
|
||||
if err := os.Setenv("FLEET_SERVER_PRIVATE_KEY", pk); err != nil {
|
||||
return fmt.Errorf("failed to set private key: %w", err)
|
||||
}
|
||||
|
||||
if err := os.Setenv("FLEET_VERSION", c.String(tagFlagName)); err != nil {
|
||||
return fmt.Errorf("failed to set Fleet version: %w", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue