-
Notifications
You must be signed in to change notification settings - Fork 0
/
certificate.go
115 lines (102 loc) · 2.35 KB
/
certificate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package resource
import (
"io/ioutil"
"os"
"path/filepath"
"text/template"
"github.com/terassyi/kakoi/cert"
)
type Pki struct {
Path string
WorkPath string
domain string
CaCert string
CaKey string
ServerCert string
ServerKey string
ClientCert string
ClientKey string
}
func newPki(path, domain string) *Pki {
return &Pki{
Path: path,
WorkPath: "pki",
domain: domain,
CaCert: "ca." + domain + ".crt",
CaKey: "ca." + domain + ".key",
ServerCert: "server." + domain + ".crt",
ServerKey: "server." + domain + ".key",
ClientCert: "client." + domain + ".crt",
ClientKey: "client." + domain + ".key",
}
}
func (p *Pki) BuildTemplate(workDir string) error {
pkiFile, err := os.Create(filepath.Join(workDir, p.domain+".tf"))
if err != nil {
return err
}
defer pkiFile.Close()
t, err := template.New("pki.tf.tmpl").ParseFiles("/etc/kakoi/templates/aws/pki.tf.tmpl")
if err != nil {
return err
}
return t.Execute(pkiFile, p)
}
func (p *Pki) Create() error {
return cert.GeneratePki(p.Path, p.domain)
}
func (p *Pki) ReadCaCert() (string, error) {
bytes, err := ioutil.ReadFile(filepath.Join(p.Path, p.CaCert))
if err != nil {
return "", err
}
return string(bytes), nil
}
func (p *Pki) ReadClientCert() (string, error) {
bytes, err := ioutil.ReadFile(filepath.Join(p.Path, p.ClientCert))
if err != nil {
return "", err
}
return string(bytes), nil
}
func (p *Pki) ReadClientKey() (string, error) {
bytes, err := ioutil.ReadFile(filepath.Join(p.Path, p.ClientKey))
if err != nil {
return "", err
}
return string(bytes), nil
}
type KeyPair struct {
Path string
WorkPath string
Name string
Pem string
Pub string
}
func newKeyPair(path, name string) *KeyPair {
return &KeyPair{
Path: path,
WorkPath: "keys",
Name: name,
Pem: name + ".pem",
Pub: name + ".pub",
}
}
func (k *KeyPair) BuildTemplate(workDir string) error {
keyPairFile, err := os.Create(filepath.Join(workDir, k.Name+".tf"))
if err != nil {
return err
}
defer keyPairFile.Close()
t, err := template.New("keypair.tf.tmpl").ParseFiles("/etc/kakoi/templates/aws/keypair.tf.tmpl")
if err != nil {
return err
}
return t.Execute(keyPairFile, k)
}
func (k *KeyPair) Create() error {
if err := cert.GenerateKeyPair(k.Name, k.Path); err != nil {
return err
}
return nil
}