My Handy openssl
command list;
Generate a password hash
1 | openssl passwd -1 |
Really handy, if you vitally need to store users passwords in you system
Generate Randomness
1 | openssl rand -base64 128 |
A nice comparison of this wold be with
1 | cat /dev/urandom | head -c 128 | base64 |
Although it seems openssl
actually uses /dev/urandom
under the hood, when hardware is specified
Generating Keys
RSA Key
1 | openssl genrsa -aes256 -out node.key 2048 |
Public Key
1 | openssl rsa -in node.key -pubout -out node.pub.key |
DSA key
1 | openssl dsaparam -genkey 2048 -out node.dsa.key |
or simpler;
1 | openssl dsaparam -genkey 2048 | openssl dsa -out node.key -aes256 |
ECDSA key
1 | openssl ecparam -genkey -name secp256r1 -out node.ecdsa.key |
or simpler;
1 | openssl ecparam -genkey -name secp256r1 | openssl ec -out node.key -aes256 |
Self signed Keys
In order to request a new self signed certificate, and a new private key:
1 | openssl req -new -x509 -keyout privkey.pem -newkey rsa:2048 |
req
: certificate request and certificate generating utilitynew
: generates a new certificate requestx509
: creates a test certificate or a self signed root CAkeyout
: the filename to write the newly created private keynewkey
: creates a new certificate request and a new private key
Also
Examine and verify certificate request
1 | openssl req -in node.key -text -verify -noout |
Creating a csr with a key
1 | openssl req -new -key node.key -out node.csr |
Requesting a custom siggning certificate
1 | openssl x509 -req -days 365 -in node.csr -signkey node.key -out node.crt |
or without a csr
1 | openssl req -new -x509 -days 365 -key node.key -out node.crt |
Then creating a csr from an existing certificate
1 | openssl x509 -x509toreq -in node.crt -ou node.csr -signkey node.key |
x509
Display the contents of a certificate:
1 | openssl x509 -in cert.pem -noout -text |
Display the certificate serial number:
1 | openssl x509 -in cert.pem -noout -serial |
Display the certificate subject name:
1 | openssl x509 -in cert.pem -noout -subject |
Display the certificate subject name in RFC2253 form:
1 | openssl x509 -in cert.pem -noout -subject -nameopt RFC2253 |
Display the certificate subject name in oneline form on a terminal supporting UTF8:
1 | openssl x509 -in cert.pem -noout -subject -nameopt oneline,-esc_msb |
Display the certificate MD5 fingerprint:
1 | openssl x509 -in cert.pem -noout -fingerprint |
Display the certificate SHA1 fingerprint:
1 | openssl x509 -sha1 -in cert.pem -noout -fingerprint |
Convert a certificate from PEM to DER format:
1 | openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER |
Convert a certificate to a certificate request:
1 | openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem |
Convert a certificate request into a self signed certificate using extensions for a CA:
1 | openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca \ |
Sign a certificate request using the CA certificate above and add user certificate extensions:
1 | openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial |
Set a certificate to be trusted for SSL client use and change set its alias to “Steve’s Class 1 CA”
1 | openssl x509 -in cert.pem -addtrust clientAuth -setalias "Steve's Class 1 CA" -out trust.pem |