How to view and edit cacerts file?
Categories:
Mastering Java cacerts: View, Edit, and Manage Trust Stores

Learn how to effectively view, edit, and manage the Java cacerts
file, a critical component for secure communication in Java applications, including those deployed on WebSphere.
The cacerts
file is a crucial component of the Java Runtime Environment (JRE) and Java Development Kit (JDK). It acts as a system-wide trust store, containing a list of trusted Certificate Authority (CA) certificates. These certificates are used by Java applications to verify the authenticity of SSL/TLS certificates presented by servers during secure communication. Understanding how to view and modify this file is essential for troubleshooting connectivity issues, integrating with new services, and maintaining a secure application environment, especially in enterprise settings like WebSphere.
Understanding the cacerts Keystore
The cacerts
file is a Java KeyStore (JKS) file located in the jre/lib/security
directory of your Java installation. It contains public certificates from trusted Certificate Authorities. When a Java application attempts to establish a secure connection (e.g., HTTPS, LDAPS), it checks the server's certificate against the certificates stored in cacerts
. If the server's certificate is signed by a CA whose certificate is present in cacerts
, the connection is deemed trustworthy.
By default, the password for the cacerts
file is changeit
. It's important to note that modifying the default cacerts
file directly can have system-wide implications. For application-specific trust, it's often recommended to create a separate custom trust store.
flowchart TD A[Java Application] --> B{Initiate Secure Connection} B --> C[Server Presents SSL/TLS Certificate] C --> D{Java Trust Manager} D --> E["Check Server Cert Against cacerts"] E --"Trusted CA Found"--> F[Connection Established] E --"No Trusted CA"--> G[SSLHandshakeException] F --> H[Secure Communication]
Flowchart illustrating how Java applications use cacerts
for secure connections.
Viewing the Contents of cacerts
The primary tool for interacting with Java keystores, including cacerts
, is the keytool
utility, which comes with the JDK. To view the certificates stored in cacerts
, you'll use the keytool -list
command. This command allows you to inspect the aliases, certificate types, and other details of each entry.
keytool -list -v -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit
Command to list all certificates in the default cacerts
file with verbose output.
keytool
from the correct JDK/JRE path that your application or WebSphere instance is configured to use. You can specify the full path to keytool
if $JAVA_HOME
is not set correctly.Adding a Certificate to cacerts
You might need to add a certificate to cacerts
if your Java application needs to trust a server whose certificate is not signed by a CA already present in the trust store, or if you're connecting to a service with a self-signed certificate. This is common when integrating with internal services or development environments. The process involves obtaining the server's certificate and then importing it using keytool
.
1. Step 1: Obtain the Server Certificate
You can obtain the server's certificate using various methods. One common way is to use openssl
or a web browser to export it. For example, to get a certificate from an HTTPS endpoint:
2. Step 2: Import the Certificate into cacerts
Once you have the certificate file (e.g., server_cert.cer
), you can import it into cacerts
using the keytool -importcert
command. You'll need to provide a unique alias for the certificate.
Using OpenSSL
echo | openssl s_client -connect example.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > server_cert.cer
Using Browser (Conceptual)
- Navigate to the secure website in your browser.
- Click on the padlock icon in the address bar.
- View certificate details and export the certificate (usually in DER or PEM format).
keytool -importcert -file server_cert.cer -keystore "$JAVA_HOME/jre/lib/security/cacerts" -alias my_server_cert -storepass changeit
Command to import a server certificate into cacerts
.
Deleting a Certificate from cacerts
To remove a certificate from cacerts
, you'll use the keytool -delete
command, specifying the alias of the certificate you wish to remove. This is useful for removing expired, untrusted, or unnecessary certificates.
keytool -delete -alias my_server_cert -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit
Command to delete a certificate by its alias from cacerts
.
Managing cacerts in WebSphere Environments
In WebSphere Application Server (WAS) environments, the management of trust stores is often handled through the administrative console, which provides a more user-friendly interface than direct keytool
commands. However, understanding keytool
is still valuable for troubleshooting or when direct file system access is preferred.
WebSphere typically uses its own trust stores (e.g., NodeDefaultTrustStore.p12
, CellDefaultTrustStore.p12
) which are managed separately from the JRE's cacerts
. When a Java application runs within WAS, it will primarily use the trust stores configured within the WAS profile. However, if an application explicitly references the JRE's cacerts
or if WAS itself needs to trust a certificate not in its own trust stores, then managing the JRE's cacerts
becomes relevant.

WebSphere's trust store hierarchy often supersedes the JRE's cacerts
for application-level trust.