Create a certificate request
How to create a new key and certificate request using OpenSSL in one line (as of OpenSSL 1.1.1). For a RSA key:
$ openssl req -nodes -newkey rsa:2048 -keyout priv.key -out server.csr -subj "/CN=server1.example.com" -addext "subjectAltName = DNS:server1.example.com,DNS:server1.ipa.example.com"
Or if you preffer an ECC key:
$ openssl ecparam -out priv.key -name secp384r1 -genkey
$ openssl req -nodes -new -key priv.key -out server.csr -subj "/CN=server1.example.com" -addext "subjectAltName = DNS:server1.example.com"
Verify certificate request
To verify a CSR using OpenSSL from the command line:
$ openssl req -noout -text -in server.csr
Verify a key
To verify the private key created during CSR generation
$ openssl rsa -noout -text -in server.key
Verify a signed certificate
To verify a signed certificate using OpenSSL
openssl x509 -noout -text -in <path/to/cert.crt>
Verify RSA key and certificates matches
To verify that a RSA private key, a CSR, and a public certificate all match, compare the modulus using OpenSSL commands
$ openssl req -in server.csr -noout -modulus
Modulus=C864B9E25EA17622C7B865947C289100EBC7AEADB829A90575F48CFADADA46929856F20F1BE707B0DD84A6F11F02CD0350A4E126DB4B468A2FC00C78CC4C3D93CC1330F260208C4F3600285261A1D3D419F0433FC2BBB3EA9186643EB28F15ADB29360AD404340C254CCECE1379D4D1322A73C085288470581E2C01FCC18115E0097CA0DC208A44540821BEE563AC4660BEBEC4E2257B58473870596DE60BAA0854DFF543A440518DF9D1B009B715E74360D7EBF97368512A31DD24D2EB4AEBCCEF1B5FF5BD3B0C38D8A9B6424ADA9972F191373D89BD776BD2C39630EE7FA44D2ECBE2C67541977C097A67002CF037A7A75BF7510C4EF29D3EDC32D968D4BD3
$ openssl rsa -in server.key -noout -modulus
Modulus=C864B9E25EA17622C7B865947C289100EBC7AEADB829A90575F48CFADADA46929856F20F1BE707B0DD84A6F11F02CD0350A4E126DB4B468A2FC00C78CC4C3D93CC1330F260208C4F3600285261A1D3D419F0433FC2BBB3EA9186643EB28F15ADB29360AD404340C254CCECE1379D4D1322A73C085288470581E2C01FCC18115E0097CA0DC208A44540821BEE563AC4660BEBEC4E2257B58473870596DE60BAA0854DFF543A440518DF9D1B009B715E74360D7EBF97368512A31DD24D2EB4AEBCCEF1B5FF5BD3B0C38D8A9B6424ADA9972F191373D89BD776BD2C39630EE7FA44D2ECBE2C67541977C097A67002CF037A7A75BF7510C4EF29D3EDC32D968D4BD3
$ openssl x509 -in server.crt -noout -modulus
Modulus=C864B9E25EA17622C7B865947C289100EBC7AEADB829A90575F48CFADADA46929856F20F1BE707B0DD84A6F11F02CD0350A4E126DB4B468A2FC00C78CC4C3D93CC1330F260208C4F3600285261A1D3D419F0433FC2BBB3EA9186643EB28F15ADB29360AD404340C254CCECE1379D4D1322A73C085288470581E2C01FCC18115E0097CA0DC208A44540821BEE563AC4660BEBEC4E2257B58473870596DE60BAA0854DFF543A440518DF9D1B009B715E74360D7EBF97368512A31DD24D2EB4AEBCCEF1B5FF5BD3B0C38D8A9B6424ADA9972F191373D89BD776BD2C39630EE7FA44D2ECBE2C67541977C097A67002CF037A7A75BF7510C4EF29D3EDC32D968D4BD3
Verify ECC key and certificate matches
$ openssl x509 -pubkey -in server.crt
$ openssl ec -pubout -in server.key
Verify a service’s public cert
To connect to a service and verify its public certificate using OpenSSL in the command line
$ openssl s_client -connect <hostname:port>