GenGatewayCerts generates a client certificates for the EUI.
()
| 117 | |
| 118 | // GenGatewayCerts generates a client certificates for the EUI. |
| 119 | func (Dev) GenGatewayCerts() error { |
| 120 | eui := os.Getenv("GATEWAY_EUI") |
| 121 | certReq := csr.CertificateRequest{ |
| 122 | CN: eui, |
| 123 | Names: names, // Use the same names. |
| 124 | KeyRequest: csr.NewKeyRequest(), |
| 125 | } |
| 126 | g := &csr.Generator{Validator: func(req *csr.CertificateRequest) error { return nil }} |
| 127 | csr, key, err := g.ProcessRequest(&certReq) |
| 128 | if err != nil { |
| 129 | return err |
| 130 | } |
| 131 | signReq := signer.SignRequest{ |
| 132 | Request: string(csr), |
| 133 | Hosts: certReq.Hosts, |
| 134 | } |
| 135 | s, err := universal.NewSigner(universal.Root{ |
| 136 | Config: map[string]string{ |
| 137 | "cert-file": filepath.Join(devDir, gatewayCertsDir, "ca.pem"), |
| 138 | "key-file": filepath.Join(devDir, gatewayCertsDir, "ca-key.pem"), |
| 139 | }, |
| 140 | }, &config.Signing{ |
| 141 | Profiles: map[string]*config.SigningProfile{}, |
| 142 | Default: config.DefaultConfig(), |
| 143 | }) |
| 144 | if err != nil { |
| 145 | return err |
| 146 | } |
| 147 | cert, err := s.Sign(signReq) |
| 148 | if err != nil { |
| 149 | return err |
| 150 | } |
| 151 | if err = os.WriteFile(filepath.Join(devDir, gatewayCertsDir, fmt.Sprintf("%s.crt", eui)), cert, 0o644); err != nil { |
| 152 | return err |
| 153 | } |
| 154 | if err = os.WriteFile(filepath.Join(devDir, gatewayCertsDir, fmt.Sprintf("%s.key", eui)), key, 0o644); err != nil { |
| 155 | return err |
| 156 | } |
| 157 | return nil |
| 158 | } |