diff --git a/certs/generate.go b/certs/generate.go index 4a0a0c0..8d698ac 100644 --- a/certs/generate.go +++ b/certs/generate.go @@ -89,7 +89,7 @@ func GenCACert() (priv []byte, pub []byte, err error) { return caPrivKeyBytes, caBytes, nil } -func GenAllCerts(path string) error { +func GenAllCerts(path, domain string) error { // Create CA certs caPriv, caPub, err := GenCACert() if err != nil { @@ -103,7 +103,8 @@ func GenAllCerts(path string) error { } // Create server certs - srvKey, srvCrt, err := GenCert(caPub, caPriv) + dnsNames := []string{domain} + srvKey, srvCrt, err := GenCert(caPub, caPriv, dnsNames) if err != nil { return err } @@ -114,7 +115,7 @@ func GenAllCerts(path string) error { return err } - clientKey, clientCrt, err := GenCert(caPub, caPriv) + clientKey, clientCrt, err := GenCert(caPub, caPriv, []string{}) if err != nil { return err } @@ -128,7 +129,7 @@ func GenAllCerts(path string) error { return nil } -func GenCert(caPub, caPrivKey []byte) (priv, pub []byte, err error) { +func GenCert(caPub, caPrivKey []byte, dnsNames []string) (priv, pub []byte, err error) { // Parse ca ca, err := x509.ParseCertificate(caPub) if err != nil { @@ -150,7 +151,7 @@ func GenCert(caPub, caPrivKey []byte) (priv, pub []byte, err error) { NotBefore: time.Now(), NotAfter: time.Now().AddDate(10, 0, 0), SubjectKeyId: []byte{1, 2, 3, 4, 6}, - DNSNames: []string{"*"}, + DNSNames: dnsNames, ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth}, KeyUsage: x509.KeyUsageDigitalSignature, } diff --git a/cmd/ezshare.go b/cmd/ezshare.go index db8f4d1..c715b63 100644 --- a/cmd/ezshare.go +++ b/cmd/ezshare.go @@ -101,6 +101,10 @@ func main() { Name: "out-dir", Usage: "Directory where certificates will be stored.", }, + &cli.StringFlag{ + Name: "hostname", + Usage: "Hostname used for server certificate.", + }, }, Action: ActionGencerts, }, @@ -332,7 +336,11 @@ func ActionGencerts(c *cli.Context) error { if c.IsSet("out-dir") { outDir = c.String("out-dir") } - return certs.GenAllCerts(outDir) + if !c.IsSet("hostname") { + return fmt.Errorf("--hostname required") + } + hostname := c.String("hostname") + return certs.GenAllCerts(outDir, hostname) } func ActionInitConfig(c *cli.Context) error {