Project created with the goal of helping me learn how to write Go code and making self-signed certificate creation. Empowers users with a single executable to create and store CA certificates, private keys and sign new device certificates.
To build and run the program you need:
- Golang installed and GOPATH configured
- Install promptui packages
- Clone this repository
- Build the code with
go build...
Example of build for linux x86_64: env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o certMaker certMaker.go
To use:
- Download the certMaker executable
- Grant execute permissions
chmod +x certMaker
- Add to $PATH if necessary
- Run certMaker
./certMaker
After building or downloading one of the pre-compiled binaries, run certMaker
and respond to the prompts
The resulting certificates and keys are generated in the path provided
-ca-address
: Certificate Authority Street Address (default "101 Market St")-ca-country
: Certificate Authority Country (2 letter) (default "US")-ca-identifier
: Internal Identifier for the CA (Required to create a CA or sign a Cert)-ca-locality
: Certificate Authoritiy Locality (default "San Francisco")-ca-organization
: Certificate Authority Name (default "Example, Inc")-ca-province
: Certificate Authority Province (2 letter) (default "CA")-ca-zipcode
: Certificate Authority Zip Code (default "94016")
-ca-identifier
: ID or name of CA that will be used to signed the Certificate-server-identifier
: ID or name for the Certificate being created-server-address
: Address for the Certificate-server-common-name
: FQDN or Hostname the Certificate will be identifying-server-country
: Country for the Certificate (2 letters)-server-locality
: Locality for the Certificate-server-organization
: Organization for the Certificate-server-province
: Province for the Certificate-server-zipcode
: Zip Code for the Certificate-subject-alterative-hostname
: Alternate hostnames that the Certificate can be idetified as-subject-alternate-ip
: Alternate IP that the Certificate can be identified as
- The "wizard" mode uses the promptui package
- Certificates can be verified using OpenSSL
openssl verify -verbose -CAfile cacert.pem server.crt
- Database to store CAs, Key's and Certs
- Webapp to manage the certificates
- Add tests
- Add silent mode to facilitate automation