OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them.
##
# openssl command
#
# OpenSSL cryptographic toolkit.
# https://www.openssl.org
##
# To print a list of available subcommands:
openssl help
# To print options for a specific subcommand:
openssl help <x509>
# To print the version of OpenSSL:
openssl version
##
# openssl req command
#
# OpenSSL command to manage PKCS#10 Certificate Signing Requests.
# https://www.openssl.org/docs/manmaster/man1/openssl-req.html
##
# To generate a certificate signing request to be sent to a certificate authority:
openssl req -new -sha256 -key <filename.key> -out <filename.csr>
# To generate a selfsigned certificate and a corresponding keypair, storing both in a file:
openssl req -new -x509 -newkey <rsa>:<4096> -keyout <filename.key> -out <filename.cert> -subj "</C=XX/CN=foobar>" -days <365>
##
# openssl s_client command
#
# OpenSSL command to create TLS client connections.
# https://www.openssl.org/docs/manmaster/man1/openssl-s_client.html
##
# To display the start and expiry dates for a domain's certificate:
openssl s_client -connect <host>:<port> 2>/dev/null | openssl x509 -noout -dates
# To display the certificate presented by an SSL/TLS server:
openssl s_client -connect <host>:<port> </dev/null
# To display the complete certificate chain of an HTTPS server:
openssl s_client -connect <host>:443 -showcerts </dev/null
##
# openssl x509 command
#
# OpenSSL command to manage X.509 certificates.
# https://www.openssl.org/docs/manmaster/man1/openssl-x509.html
##
# To display certificate information:
openssl x509 -in <filename.crt> -noout -text
# To display a certificate's expiration date:
openssl x509 -enddate -noout -in <filename.pem>
# To convert a certificate between binary DER encoding and textual PEM encoding:
openssl x509 -inform <der> -outform <pem> -in <original_certificate_file> -out <converted_certificate_file>
# To store a certificate's public key in a file:
openssl x509 -in <certificate_file> -noout -pubkey -out <output_file>
# ---
# To check an SSL connection:
openssl s_client -connect <host>:<port>
# To generate new private key and CSR:
openssl req -out <filename.csr> -new -newkey rsa:2048 -nodes -keyout <filename.key>
# To read contents of a private key:
openssl rsa -check -in <private.key>
# To verify a CSR file:
openssl req -text -noout -verify -in <filename.csr>
# To check MD5 hash of a certificate:
openssl x509 -noout -modulus -in <filename.crt> | openssl md5
# To check MD5 hash of a private key:
openssl rsa -noout -modulus -in <filename.key> | openssl md5
# To check MD5 hash of a CSR file:
openssl req -noout -modulus -in <filename.csr> | openssl md5