Common commands to manage SSL Certs using openSSL & keytool
SSL Commands List
OpenSSL is an open-source implementation of SSL/TLS protocols and is considered to be one of the most versatile SSL tools. It’s a library written in C programming language that implements the basic cryptographic functions. OpenSSL have different versions for most Unix-like operating systems, which include Mac OC X, Linux, and Microsoft Windows etc.
Open SSL is normally used to generate a Certificate Signing Request (CSR) and private key for different platforms. However, it also has several different functions, which can be listed as follows. It is used to:
View details about a CSR or a certificateCompare MD5 hash of a certificate and private key to ensure they matchVerify proper installation of the certificate on a websiteConvert the certificate formatMost of the functions mentioned below can also be performed without involving OpenSSL by using these convenient SSL tools. Here, we have put together few of the most common OpenSSL commands.
OpenSSL
General OpenSSL CommandsThese are the set of commands that allow the users to generate CSRs, Certificates, Private Keys and many other miscellaneous tasks. Here, we have listed few such commands:
(1) Generate a Certificate Signing Request (CSR) and new private keyopenssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
(2) Generate a self-signed certificateopenssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
(3) Create CSR based on an existing private keyopenssl req -out CSR.csr -key privateKey.key –new
(4) Create CSR based on an existing certificateopenssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
(5) Passphrase removal from a private keyopenssl rsa -in privateKey.pem -out newPrivateKey.pem
If the user wants to check the information within an SSL certificate, a Private Key and CSR. Few online tools can also help you check CSRs and check SSL certificates.
(1) Certificate Signing Request (CSR)openssl req -text -noout -verify -in CSR.csr
(2) Private Keyopenssl rsa -in privateKey.key –check
(3) SSL Certificateopenssl x509 -in certificate.crt -text –noout
(4) PKCS#12 File (.pfx or .p12)openssl pkcs12 -info -in keyStore.p12
–> Convert CommandsAs per the title, these commands help convert the certificates and keys into different formats to impart them the compatibility with specific servers types. For example, a PEM file, compatible with Apache server, can be converted to PFX (PKCS#12), after which it would be possible for it to work with Tomcat or IIS. However, you can also use the SSL Converter to change the format, without having to involve OpenSSL.
(1) Convert DER Files (.crt, .cer, .der) to PEMopenssl x509 -inform der -in certificate.cer -out certificate.pem
(2) Convert PEM to DERopenssl x509 -outform der -in certificate.pem -out certificate.der
(3) Convert PKCS #12 File (.pfx, .p12) Containing a Private Key and Certificate to PEMopenssl pkcs12 -in keyStore.pfx -out keyStore.pem –nodes
To output only the private key, users can add –nocerts or –nokeys to output only the certificates.
(4) Convert PEM Certificate (File and a Private Key) to PKCS # 12 (.pfx #12)openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
–> Debugging Using OpenSSL CommandsIf there are error messages popping up about your private key not matching the certificate or that the newly-installed certificate is not trusted, you can rely on one of the comments mentioned below. You can also use the SSL certificate checker tool for verifying the correct installation of an SSL certificate.
(1) Check SSL Connection (All certificates, including Intermediates, are to be displayed)
Here, all the certificates should be displayed, including the Intermediates as well.openssl s_client -connect www.paypal.com:443
(2) Check MD5 Hash of Public Key
This is to ensure that the public key matches with the CSR or the private key.openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5
Keytool
Java Keytool is a key and certificate management utility that allows the users to cache the certificate and manage their own private or public key pairs and certificates. Java Keytool stores all the keys and certificates in a ‘Keystore’, which is, by default, implemented as a file. It contains private keys and certificates that are essential for establishing the reliability of the primary certificate and completing a chain of trust.
Every certificate in Java Keystore has a unique pseudonym/alias. For creating a ‘Java Keystore’, you need to first create the .jks file containing only the private key in the beginning. After that, you need to generate a Certificate Signing Request (CSR) and generate a certificate from it. After this, import the certificate to the keystore including any root certificates.
The ‘Java Keytool’ basically contains several other functions that help the users export a certificate or to view the certificate details or the list of certificates in keystore.
Here are few important Java Keytool commands:
For Creating and Importing These Keytool commands allow users to create a new Java Keytool keystore file, generate a Certificate Signing Request (CSR) and import certificates. Before you import the primary certificate for your domain, you need to first import any root or intermediate certificates.
(1) Import a root or intermediate CA certificate to an existing Java keystorekeytool -import -trustcacerts -alias root -file Thawte.crt -keystore keystore.jks
(2) Import a signed primary certificate to an existing Java keystorekeytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore keystore.jks
(3) Generate a keystore and self-signed certificatekeytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
(4) Generate Key Pair & Java Keystorekeytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -keysize 2048
(5) Generate CSR for existing Java Keystorekeytool -certreq -alias mydomain -keystore keystore.jks -file mydomain.csr
(1) For CheckingUsers can check the information within a certificate or Java keystore by using the following commands:openssl req -noout -modulus -in CSR.csr | openssl md5keytool -printcert -v -file mydomain.crt
(2) Check certificates in Java keystorekeytool -list -v -keystore keystore.jks
(3) Check specific keystore entry using an aliaskeytool -list -v -keystore keystore.jks -alias mydomain
Other Java Keytool Commands
(1) Delete a certificate from Java Keystore keystorekeytool -delete -alias mydomain -keystore keystore.jks
(2) Change the password in Java keystore / Change a Java keystore passwordkeytool -storepasswd -new new_storepass -keystore keystore.jks
(3) Export certificate from Java keystorekeytool -export -alias mydomain -file mydomain.crt -keystore keystore.jks
(4) List the trusted CA Certificatekeytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts
(5) Import new CA into Trusted Certskeytool -import -trustcacerts -file /path/to/ca/ca.pem -alias CA_ALIAS -keystore $JAVA_HOME/jre/lib/security/cacerts
6) Import new cert:keytool -import -keystore xxxxx.jks -alias xxxxx -keypass weblogic -storepass weblogic -file xxxx.cer