Java System Properties
Quick Reference Guide


com.sun.net.ssl.checkRevocation Java System Property

The com.sun.net.ssl.checkRevocation java system property enables certificate revocation checking (via CRL or OCSP) when validating certificates during a TLS handshake.

Default Value

false

By default the JDK does not check whether a server (or client) certificate has been revoked when validating a TLS certificate chain.

Overview of com.sun.net.ssl.checkRevocation

When the com.sun.net.ssl.checkRevocation system property is set to true, the default X509TrustManager provided by the SunJSSE provider will enable revocation checking on the PKIX certificate path validation performed during a the TLS handshake. Internally the property is read by sun.security.validator.PKIXValidator, which calls PKIXParameters.setRevocationEnabled() with its value for TLS client and TLS server validation.

Because the value is read into a static field, it should be set on the command line (for example -Dcom.sun.net.ssl.checkRevocation=true) or very early in application startup, before any TLS connections are made.

Revocation Checking Requires Additional Settings

Setting com.sun.net.ssl.checkRevocation=true on its own turns on revocation checking, but the JDK also needs to know how to obtain revocation information:

If revocation checking is enabled and the revocation status of a certificate cannot be determined (for example, the OCSP responder or CRL server is unreachable), the certificate validation will fail and the TLS handshake will not complete.

The blocked.certs File

Independent of the com.sun.net.ssl.checkRevocation setting, the JDK ships with a list of distrusted certificates in the $JDK_HOME/lib/security/blocked.certs file (named blacklisted.certs in JDK 8). Certificates in this file are always rejected, even when revocation checking is disabled.

The blocked.certs file contains certificates that have been compromised in high profile incidents. For example, the October 2026 OpenJDK vulnerability advisory (CVE-2026-91403) concerns eight compromised eMudhra intermediate CA certificates, which were added to the blocked.certs file.

The file is updated with JDK releases, but you can also download the latest version and replace your local $JDK_HOME/lib/security/blocked.certs file:

For JDK 8, rename the downloaded blocked.certs file to blacklisted.certs, the file location is the same.

Because blocked.certs only covers specific certificates that have been added to it, the advisory also recommends enabling revocation checking with -Dcom.sun.net.ssl.checkRevocation=true -Dcom.sun.security.enableCRLDP=true.

Other Networking System Properties

Here are some other networking Java system properties:

References

Supported Since

Java has supported the com.sun.net.ssl.checkRevocation system property since at least Java 8.

Setting com.sun.net.ssl.checkRevocation on Startup

You can set the com.sun.net.ssl.checkRevocation java system property during startup of the java runtime using the -D command line argument:

java -Dcom.sun.net.ssl.checkRevocation=true MyAppMain

You may also be able to specify com.sun.net.ssl.checkRevocation via the JAVA_TOOL_OPTIONS environment variable:

JAVA_TOOL_OPTIONS=-Dcom.sun.net.ssl.checkRevocation=true

Setting / Reading com.sun.net.ssl.checkRevocation at Runtime

You can set com.sun.net.ssl.checkRevocation at runtime with the following Java code:

System.setProperty("com.sun.net.ssl.checkRevocation", "true");

WARNING: Depending on the property and JVM version using setProperty may or may not work if the JDK Java class that uses this variable has already been loaded. The value of the com.sun.net.ssl.checkRevocation system property may be cached within an internal private static variable of the implementing class.

To read the value of com.sun.net.ssl.checkRevocation at runtime, you can use this Java code:

String propertyValue = System.getProperty("com.sun.net.ssl.checkRevocation");
if (propertyValue != null) {
    System.out.println("com.sun.net.ssl.checkRevocation = " + propertyValue);
} else {
    System.out.println("com.sun.net.ssl.checkRevocation was null");
}