Skip to content

Commit ed89e7f

Browse files
authored
Add command to generate a server certificate (#157)
1 parent a04d422 commit ed89e7f

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

cmd/certificates-getservercert.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"net"
6+
7+
"github.com/couchbaselabs/cbdinocluster/utils/dinocerts"
8+
"github.com/spf13/cobra"
9+
"go.uber.org/zap"
10+
)
11+
12+
var certificatesGetServerCert = &cobra.Command{
13+
Use: "get-server-cert",
14+
Short: "Fetches a server cert configured using the flags",
15+
Args: cobra.MinimumNArgs(0),
16+
Run: func(cmd *cobra.Command, args []string) {
17+
helper := CmdHelper{}
18+
logger := helper.GetLogger()
19+
20+
rootCa, err := dinocerts.GetRootCertAuthority()
21+
if err != nil {
22+
logger.Fatal("failed to get dino certificate authority", zap.Error(err))
23+
}
24+
25+
ip, _ := cmd.Flags().GetString("ip")
26+
dns, _ := cmd.Flags().GetString("dns")
27+
28+
var ipAddrs []net.IP
29+
if ip != "" {
30+
ipAddrs = []net.IP{net.ParseIP(ip)}
31+
}
32+
33+
var dnsNames []string
34+
if dns != "" {
35+
dnsNames = []string{dns}
36+
}
37+
38+
cert, key, err := rootCa.MakeServerCertificate("server-cert", ipAddrs, dnsNames)
39+
if err != nil {
40+
logger.Fatal("failed to generate server certificate", zap.Error(err))
41+
}
42+
43+
fmt.Printf("%s\n%s\n", cert, key)
44+
},
45+
}
46+
47+
func init() {
48+
certificatesCmd.AddCommand(certificatesGetServerCert)
49+
50+
certificatesGetServerCert.Flags().String("dns", "", "The dns name for the server certificate")
51+
certificatesGetServerCert.Flags().String("ip", "", "The ip address for the server cetificate")
52+
}

0 commit comments

Comments
 (0)