OpenSSL
Private Key {.cols-2}
Print out the private key details
openssl rsa -check -text -in privateKey.keyPrint out the hashes of the private key
openssl rsa -noout -modulus -in privateKey.key | openssl md5openssl rsa -noout -modulus -in privateKey.key | openssl sha1openssl rsa -noout -modulus -in privateKey.key | openssl sha256openssl rsa -noout -modulus -in privateKey.key | openssl sha512Change password
openssl rsa -aes256 -in privateKey.key -out newPrivateKey.keyList available elliptic curves
openssl ecparam -list_curvesCreate elliptic curve private key with a specific curve
openssl ecparam -name secp521r1 -genkey -noout -out privateKey.keyCertificate {.cols-2}
Print out the hashes of the certificate
openssl x509 -noout -modulus -in certificate.crt | openssl md5openssl x509 -noout -modulus -in certificate.crt | openssl sha1openssl x509 -noout -modulus -in certificate.crt | openssl sha256openssl x509 -noout -modulus -in certificate.crt | openssl sha512Or, alternatively:
openssl x509 -noout -fingerprint -in certificate.crtopenssl x509 -noout -fingerprint -sha256 -in certificate.crtPrint out the content of the certificates
openssl x509 -in certificate.crt -noout -text|morePrint out specific fields of the certificates
openssl x509 -noout -subject certificate.crtopenssl x509 -noout -issuer certificate.crtopenssl x509 -noout -dates certificate.crtInspect server certificates
echo | openssl s_client -servername www.openssl.org -connect \www.openssl.org:443 2>/dev/null | openssl x509 -noout -text|moreecho | openssl s_client -servername imap.arcor.de -connect \imap.arcor.de:993 2>/dev/null | openssl x509 -noout -text|moreVerify certificates
OK
openssl verify -verbose -x509_strict -CAfile \issuer.crt Test\ Haeschen\ 1.crtResult:
Test Haeschen 1.crt: OKCorrupted (for example)
openssl verify -verbose -x509_strict -CAfile \issuer.crt Test\ Haeschen\ 1_corrupted.crtResult:
C = DE, ST = Thueringen, L = Rudolstadt, O = Damaschkestr. 11, OU = Arbeitszimmer, CN = Test Haeschen 1error 7 at 0 depth lookup: certificate signature failureerror Test Haeschen 1_corrupted.crt: verification failed40270500477F0000:error:0200008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding:../crypto/rsa/rsa_pk1.c:75:40270500477F0000:error:02000072:rsa routines:rsa_ossl_public_decrypt:padding check failed:../crypto/rsa/rsa_ossl.c:598:40270500477F0000:error:1C880004:Provider routines:rsa_verify:RSA lib:../providers/implementations/signature/rsa_sig.c:774:40270500477F0000:error:06880006:asn1 encoding routines:ASN1_item_verify_ctx:EVP lib:../crypto/asn1/a_verify.c:217:S/Mime {.cols-2}
create signature
openssl smime -sign -in msg.txt -text -out msg.p7s \-signer certificate.crt -inkey privateKey.keyVerify signature
openssl smime -verify -in msg.p7s -CAfile chain.pemCRL {.cols-2}
Print out the contents of the CRL
openssl crl -inform DER -noout -text -in crl/cacrl.deropenssl crl -inform PEM -noout -text -in crl/cacrl.pemPKCS#12 {.cols-2}
Display contents
openssl pkcs12 -info -in digitalIdentity.p12Create from certificate and private key
openssl pkcs12 -export -in certificate.cert \-inkey privateKey.key -out digitalIdentity.p12Extract private key
openssl pkcs12 -in digitalIdentity.p12 -out privateKey.keyConvert to PEM
openssl pkcs12 -in digitalIdentity.p12 -out digitalIdentity.pemTSA {.cols-2}
Display query
openssl ts -query -in query.tsq -textDisplay reply
openssl ts -reply -in reply.tsr -textVerify reply
openssl ts -verify -in reply.tsr -data data.dat -CAfile chain.pemExtract token from reply
openssl ts -reply -in reply.tsr -token_out -out token.tkExtract certificates from token
openssl pkcs7 -inform DER -in token.tk -print_certs -noout -textCSR {.cols-2}
Create from existing key
openssl req -new -key privateKey.key -out my.csrThis can of course be a RSA key or one based on an elliptic curve. Available curves can be listed using
openssl ecparam -list_curvesAfterwards you chose one of the curves and create a private key like so:
openssl ecparam -name secp521r1 -genkey -noout \-out privateKey.keyDisplay
openssl req -in my.csr -noout -textHTTPS {.cols-2}
Dump Certificates PEM encoded
openssl s_client -showcerts -connect www.example.com:443STARTTLS {.cols-2}
Dump Certificates PEM encoded
openssl s_client -showcerts -starttls imap \-connect mail.domain.com:139S/MIME verification {.cols-2}
Possible outcomes
Message was tampered with (return code 4):
Verification failure140485684135232:error:2E09A09E:CMS routines:CMS_SignerInfo_verify_content:verification failure:../crypto/cms/cms_sd.c:847:140485684135232:error:2E09D06D:CMS routines:CMS_verify:content verify error:../crypto/cms/cms_smime.c:393:Message signature not trusted (return code 4):
Verification failure140146111432000:error:2E099064:CMS routines:cms_signerinfo_verify_cert:certificate verify error:../crypto/cms/cms_smime.c:252:Verify error:unable to get local issuer certificateMessage not signed (return code 2):
Error reading S/MIME message140701208487232:error:0D0D40CD:asn1 encoding routines:SMIME_read_ASN1:invalid mime type:../crypto/asn1/asn_mime.c:469:type: multipart/alternativeValidation successful (return code 0):
Verification successfulVerify the validity of an email message
openssl cms -verify -in some_email_message.emlVerify the validity of an email message explicitly specifying trust
openssl cms -verify -in some_email_message \-CAfile trust_anchor-crtSigned and encrypted messages need to be decrypted first:
Note: the P12 file holding the digital identity must be pem-encoded! (see above)
openssl cms -decrypt -out decrypted_email_message \-inkey p12.pem -in some_encrypted_email_messageRaw {.cols-2}
See the raw structure of an ASN.1 file (only for DER encoded files)
openssl asn1parse -in mysterious_file.pemWith a bit more detail
openssl asn1parse -dump -strictpem -in mysterious_file.pemSome resources with useful OpenSSL commands
- OpenSSL command cheatsheet
- 21 OpenSSL Examples to Help You in Real-World
- The Most Common OpenSSL Commands
- OpenSSL Quick Reference Guide
- openssl_commands.md
- OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs
- OpenSSL tips and tricks
- Checking A Remote Certificate Chain With OpenSSL
- OpenSSL: how to extract certificates and token status from RFC3161 timestamping reply?
- Steps to generate CSR for SAN certificate with openssl
- Howto add a Subject Alternative Name extension into a Certificate Signing Request