A tool for creating a demo certificate authority (CA) and self signed certificates quickly.
Fork of https://github.com/ribbybibby/tls-tool
tls-tool -help
usage: tls-tool [<flags>] <command> [<args> ...]
A tool for creating TLS certificates quickly
Flags:
-help Show help
-version Show version
Commands:
ca [<flags>]
Create a new certificate authority
cert [<flags>]
Create a new certificate
Usage of the CA subcommand:
tls-tool ca -help
usage: tls-tool ca [<flags>]
Create a new certificate authority
Flags:
-additional-name-constraint value
Add additional name constraints for the CA
-country string
Country code for the new CA (default "GB")
-days int
Number of days the CA is valid (default 1825)
-domain string
Domain name for the new CA (default "ribbybibby.me")
-locality string
Locality for the new CA (default "London")
-name-constraint
Add name constraints for the CA
-organization string
Organization for the new CA (default "ribbybibby")
-postal-code string
Postal code for the new CA (default "SW18XXX")
-province string
Province for the new CA (default "England")
-street-address string
Street Address for the new CA (default "123 Fake St")
Usage of the certificate subcommand:
tls-tool cert -help
usage: tls-tool cert [<flags>]
Create a new certificate
Flags:
-additional-dnsname value
Provide additional dnsnames for Subject Alternative Names
-ca string
Path to the CA certificate file (default "ca.pem")
-days int
Number of days the certificate is valid for from now on (default 365)
-domain string
Domain for the new certificate (default "ribbybibby.me")
-insecure
Optionally allow the creation of purposely expired or otherwise invalid certs
-ipaddresses value
Provide IPs for Subject Alternative Names
-key string
Path to the CA key file (default "ca-key.pem")
Create a CA:
tls-tool ca
ca.pem
ca-key.pem
Create a certificate:
tls-tool cert
cert-ribbybibby.me-0.pem
cert-ribbybibby.me-0-key.pem
With additional names:
tls-tool cert -additional-dnsname foobar.internal -additional-dnsname example.internal
cert-ribbybibby.me-1.pem
cert-ribbybibby.me-1-key.pem
With a specific extended key usage:
tls-tool cert -eku serverauth -eku clientauth
Available values are (case-insensitive):
CLI value | EKU |
---|---|
any | x509.ExtKeyUsageAny |
serverauth | x509.ExtKeyUsageServerAuth |
clientauth | x509.ExtKeyUsageClientAuth |
codesigning | x509.ExtKeyUsageCodeSigning |
emailprotection | x509.ExtKeyUsageEmailProtection |
ipsecendsystem | x509.ExtKeyUsageIPSECEndSystem |
ipsectunnel | x509.ExtKeyUsageIPSECTunnel |
ipsecuser | x509.ExtKeyUsageIPSECUser |
timestamping | x509.ExtKeyUsageTimeStamping |
ocspsigning | x509.ExtKeyUsageOCSPSigning |
microsoftservergatedcrypto | x509.ExtKeyUsageMicrosoftServerGatedCrypto |
netscapeservergatedcrypto | x509.ExtKeyUsageNetscapeServerGatedCrypto |
microsoftcommercialcodesigning | x509.ExtKeyUsageMicrosoftCommercialCodeSigning |
microsoftkernelcodesigning | x509.ExtKeyUsageMicrosoftKernelCodeSigning |
See: https://pkg.go.dev/crypto/x509#ExtKeyUsage
Verification:
openssl x509 -inform pem -noout -text -in cert-ribbybibby.me-0.pem