예제 #1
0
func genCertCmd(component string) *cobra.Command {
	return &cobra.Command{
		Use:   "gen-cert",
		Short: "Generate a TLS certificate",
		Long:  `ttn gen-cert generates a TLS Certificate`,
		Run: func(cmd *cobra.Command, args []string) {
			var names []string
			if announcedName := viper.GetString(component + ".server-address-announce"); announcedName != "" {
				names = append(names, announcedName)
			}
			names = append(names, args...)
			if err := security.GenerateCert(viper.GetString("key-dir"), names...); err != nil {
				ctx.WithError(err).Fatal("Could not generate certificate")
			}
			ctx.WithField("TLSDir", viper.GetString("key-dir")).Info("Done")
		},
	}
}
예제 #2
0
func TestInitTLS(t *testing.T) {
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	tmpDir := fmt.Sprintf("%s/%d", os.TempDir(), r.Int63())
	os.Mkdir(tmpDir, 755)
	defer os.Remove(tmpDir)

	a := assertions.New(t)
	c := new(Component)
	c.Identity = new(discovery.Announcement)
	c.Config.KeyDir = tmpDir

	security.GenerateKeypair(tmpDir)
	c.initKeyPair()

	a.So(c.initTLS(), assertions.ShouldNotBeNil)

	security.GenerateCert(tmpDir)

	a.So(c.initTLS(), assertions.ShouldBeNil)

	a.So(c.Identity.Certificate, assertions.ShouldNotBeEmpty)
	a.So(c.tlsConfig, assertions.ShouldNotBeNil)
}