furuCRM
Back to Blog

[Important] Preparation Required for Upcoming Root Certificate Change

February 3, 2026
[Important] Preparation Required for Upcoming Root Certificate Change

To Salesforce administrators and IT department members,

Recently, did you receive an email from Salesforce with the slightly alarming subject line: “【Important】Request for preparation for the root certificate change”?

You might be thinking, “Certificates? Root? Chain? They’re telling me to prepare by Feb 5… what am I supposed to do?!”

But don’t worry. For most users, this is a “no action required” situation.

However, some system integrations have hidden “pitfalls.”

In this article, we summarize—in a checklist format—what will happen and who should check what, using as little technical jargon as possible.

In short, what’s going to happen?

On February 5, 2026, Salesforce will switch its security “identity certificate” to a new one.

Think of it like airport immigration control.

  • Salesforce (the traveler): shows a passport and says, “Hello—please let me through.”
  • Your company’s system (the immigration officer): “Let me verify the passport issuer… OK, it’s a trusted issuer. You may pass!”
Certificate Trust Store Verification Flow

What’s happening this time is that Salesforce will switch to a “passport issued by a new authority (DigiCert G2).”

If your system (the officer) reacts like, “Wait, I don’t know this issuer! Looks suspicious—no entry!” then integration errors will occur.

To prevent this, you need to tell your system: “It’s okay to trust this new issuer as well.”

[Checklist] Are we OK? Three cases that may require action

In general, if you only view Salesforce in a PC browser (Chrome/Edge), you don’t need to do anything (because it updates automatically).

The key risk is when you have “system integrations (API connections).”

Share the checklist below with your IT department or development vendor and ask them to confirm.

✅ 1. You integrate data from your own servers to Salesforce

Do you send data to Salesforce or retrieve data from it using internal servers or systems on AWS?

If you use Java, be especially careful.

Checkpoint: Confirm your Java version!

  • Java 17 or later: 🟢 Safe (no action needed)
  • Java 8 (Update 75 or later): 🟢 Safe (no action needed)
  • Java 8 (Update 74 or earlier): 🔴 Dangerous — update required

*Even with other languages, very old environments may not include the required certificate.

✅ 2. Are you doing “certificate pinning”?

This is an engineering check—and it’s the biggest pitfall.

Have you tightened security too much by implementing code that “only allows communication if the certificate exactly matches a specific older certificate (pinning)”?

Checkpoint:

  • Is a specific certificate fingerprint (hash value) hard-coded in the program?
  • If yes, you must either add the new certificate (DigiCert Global Root G2) to the allowlist, or remove the pinning configuration itself.

🔍 Investigation target code examples If you find code like this, a connection error will occur the moment Salesforce switches certificates.

Example 1: Java (typical implementation) A pattern where you implement a custom TrustManager, calculate the hash of the certificate provided by the server, and compare it with a pre-registered hash. // Dangerous example: configured to connect only to a specific hash

private static final String EXPECTED_CERT_HASH = "A1:B2:C3:D4:E5:F6:78:90:A1:B2:C3:D4:E5:F6:78:90:A1:B2:C3:D4:E5:F6:78:90:A1:B2:C3:D4"; // ← This is the embedded “fingerprint”

// ... (omitted) ...

@Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // Calculate the hash of the server-presented certificate (chain[0]) String serverCertHash = getThumbprint(chain[0]);

// Compare with the pre-embedded hash if (!EXPECTED_CERT_HASH.equalsIgnoreCase(serverCertHash)) { // If it doesn’t match, throw an error (this causes outages) throw new CertificateException("Certificate pinning failure! Server certificate not trusted."); }

}

Example 2: Java / Android (using the OkHttp library) OkHttp, commonly used in modern Java and Android apps, makes pinning very easy to enable via configuration. // Dangerous example: configuration using CertificatePinner

String hostname = "your-instance.salesforce.com"; CertificatePinner certificatePinner = new CertificatePinner.Builder() // ↓ A specific certificate hash is embedded here .add(hostname, "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") .build();

OkHttpClient client = new OkHttpClient.Builder() .certificatePinner(certificatePinner) .build();

Example 3: Node.js (https module, etc.) Even in Node.js, you may override the server identity verification logic in connection options and compare hash values. // Dangerous example: comparing hashes via checkServerIdentity

const https = require('https'); const crypto = require('crypto');

// ↓ Embedded hash value const PINNED_FINGERPRINT = 'A1:B2:C3:D4:E5:F6:78:90:A1:B2:C3:D4:E5:F6:78:90:A1:B2:C3:D4:E5:F6:78:90:A1:B2:C3:D4';

const options = { hostname: 'your-instance.salesforce.com', port: 443, method: 'GET', checkServerIdentity: function (host, cert) { // Get the fingerprint of the server certificate const fingerprint = cert.fingerprint256;

// Check whether it matches the embedded value if (fingerprint !== PINNED_FINGERPRINT) { // If it doesn’t match, throw an error (outage) throw new Error('Certificate pinning failed!'); } // Leave hostname verification to the standard logic return tls.checkServerIdentity(host, cert);

} };

// ... connect using https.request(options, ...)

✅ 3. Are you using very old “10-year veteran” systems/OS?

With a “once built, keep running until it breaks” mindset—are there servers that haven’t been updated for over 10 years (e.g., Windows Server 2008) or extremely old Linux distributions involved in the integration?

Checkpoint:

  • If OS updates have been stopped for years, it is highly likely the system does not recognize the new certificate.
  • Either install the certificate manually, or consider upgrading the OS as an opportunity.

What should you do in practice?

If you are a non-engineer (admin/business user), simply copy the message below and send it to your IT team or development vendor.

Subject: Request to confirm Salesforce certificate update on 2/5
Hello. On February 5, 2026, Salesforce’s root certificate will be changed to “DigiCert Global Root G2.”
For the Salesforce integration systems we use, could you please confirm the following three points?
Confirm Java version: Is the integration server using “Java 8 Update 75” or later, or “Java 17”? (It seems communication may stop if it’s older.)
Whether certificate pinning exists: Is certificate pinning (fixing/pinning a certificate) implemented in the program?
Confirm legacy OS: Are any integrations running on a legacy OS that has not been updated for over 10 years?
In particular, if “DigiCert Global Root G2” is not included in the trusted store, errors will occur after February 5, so please confirm and take action in advance.

 

In closing

A “root certificate change” is like routine “road repaving work” in the internet world.

If you’re driving a well-maintained car (modern browsers/Java), you won’t even notice—but a poorly maintained car (old systems) can get stuck on the bumps.

To avoid panicking on February 5 with “Wait—our integration isn’t working!?”, let’s at least confirm the “Java version” and “pinning settings” now!