Overview
Essentially this will be a simple three-step task that itself is very straightforward:
- Identify endpoints using the outdated TrustedCertList.pem
- Get the updated TrustedCertList.pem file on the endpoints.
- Authenticate with the Agent and instruct it to import the updated file.
As mentioned, the Certificate Update Schedule introduced in Server 8.10.2 was meant as a way to allow more time for Agents to receive these changes. Under normal circumstances, the App Control Server can typically push these changes to hundreds of thousands of Agents in under 24 hours. However, when performance impacts are being encountered, this will drastically limit the Server's ability to deliver the file automatically using IIS.
Identifying Endpoints
There are several ways to identify the endpoints either struggling to acquire the new TrustedCertList.pem file or using the Communication Key.
Remotely in the Web Console
Server 8.11.0+
- Navigate to Assets > Computers
- Set the Saved View to (none)
- Click Show Filters > Add Filter > Using Communication Key > Yes > Apply
Server 8.10.4-
- Navigate to Reports > Events >
- Set the Saved View to (none)
- Group By: Source
- Click Show Filters > Add Filters:
- Subtype is: Agent Health Check
- Description begins with: Carbon Black App Control Agent detected a problem: Untrusted server certificate
Remotely via Server High Debug Logs
- Capture 5-10 minutes while the Server is in High Debug and open the ServerLog-TIMESTAMP.bt9 in a text editor such as Notepad++.
- Searching for the following phrase will show you machines using the Communication Key:
ParseMessageHeader(): [action: METHOD_SECURE_MESSAGE]
- When searching these results, note the number in brackets just before ParseMessageHeader, example:
[46210] ParseMessageHeader(): [action: METHOD_SECURE_MESSAGE]
- There should be a line just before or after that has this same number in brackets, with the request started and IP Address of the endpoint, example:
[46210] request started from host address [192.168.0.52]
- This means the Agent from IP Address 192.168.0.52 is using the Communication Key (keychain.json) due to a Trusted Certificate mismatch.
- Until this Agent acquires the updated TrustedCertList.pem file, it will continue to use the Communication Key for all communication with the Server.
Locally via Dasli Status:
- On an endpoint > Open CMD and run:
- Check for the following line:
-
- Any Agent showing "SSL Key Pinning: On (Mismatch)" is forced to use the Communication Key.
Locally via TrustedCertList File Hash
- Remote in to the application server hosting the Web Console
- Use PowerShell to get the hash, for example:
Get-FileHash "C:\Program Files (x86)\Bit9\Parity Server\hostpkg\TrustedCertList.pem"
Algorithm Hash Path
--------- ---- ----
SHA256 BC375FC5A9B115C18505565F806E17E7D3193BF217D3F49C3BE940FE0CEC4B80 C:\Program Files (x86)\Bit9\P...
- On the relevant endpoints compare the hash of the TrustedCertList.pem file against the Certificate List value reported by the Agent:
Windows:
"C:\Program Files (x86)\Bit9\Parity Agent\dascli.exe" status
macOS:
/Applications/Bit9/Tools/b9cli --status
Example output:
Server Information
Server: serveraddress.local:41002
...
Certificate List: e6ae090da3821d920580b5b5bd4bf729f3ed393b0302b599c60faacd701ee5da
- Any Agent that does not have a Certificate List showing a matching result for the hash, is forced to use the Communication Key.
- Note: The TrustedCertList.pem file is encrypted locally on the agents as of Agent 8.9.0+
Updating the TrustedCertList.pem on Endpoints
Any workflow that is able to achieve the steps in Overview will resolve the issue. For purposes of this article, several options will be presented. No matter which option is chosen:
- Work with your Internal Teams to determine which option is best for the situation & environment.
- Test the commands manually on an endpoint to be sure your Authentication works as intended.
- Test the Resolution Option on a small subset to be sure the deployment works as intended.
Option A: Resolve any network issues preventing successful downloads
- Verify Port 443 into the server is open
- Verify the Resource Download Location in System Configuration > Advanced Options is still accurate and contains the updated files.
- Verify the IIS Certificate bound to Port 443 is not expired and formatted correctly:
- Common Name shown should match Server Address from the General tab.
- Expiration Date should be in the future.
- A matching Certificate should be listed in the Trusted Communication Certificates list at the bottom on the System Config > Security tab
- Verify whether a Proxy or other VPN/SSL Inspection network device is between the Agents and the App Control Server.
- If a certificate exists on the Proxy or other Network Appliance, it must be imported in the Trusted Communication Certificates list (System Config > Security tab
- If SSL Inspection is enabled, the Agents will reject the modified packets.
- If any other authentication (such as 2FA) is enabled for 41002 or 443 the Agents may fail to properly communicate.
Option B: Scripting the Commands and deploying via any deployment tool (GPO/SCCM/Intune)
Scripting the commands could easily allow for your SCCM Team to deploy a package that authenticates with the Agent and imports the updated TrustedCertList.pem file.
- From the application server hosting the Console, copy the TrustedCertList.pem file on a location that is accessible to all the Agents
- By default:
C:\Program Files (x86)\Bit9\Parity Server\hostpkg\Trustedcertlist.pem
- Manually import the files with commands in this article on one or more agents.
- This will ensure authentication with the Agent, and that the import commands work.
- Use the same commands to write a script or use the PowerShell script attached to the bottom of this article.
- Test the script on a couple of agents identified using the steps above in Identifying Endpoints.
- Continue to expand out to all relevant endpoints accordingly.
Option C: Deploying via Active Directory/GPO Run Once
Work with your Active Directory team to verify the proper procedure for your environment using the PDF attached to the bottom of this article (AD Import TrustedCertList.pdf):
- Acquire the TrustedCertList.pem
- Create the GPO
- Assign tasks for the import and authentication.
- Push the GPOs out accordingly.
Option D: Traffic Throttling
Work with your Firewall team to block access to the Server via port 41002. This will prevent Agents from communicating with the App Control Server using the Communication Key which will alleviate the performance impact.
Slowly open this restriction back up after confirming various segments have fully received the updated TrustedCertList.pem file. Example steps:
- Block communication to the Server Address on Port 41002 at the firewall layer.
- It may be necessary to restart the Carbon Black App Control Server service to drop any existing connections.
- Allow communication to the Server Address on Port 41002 by a small segment (example, 10 machines).
- Verify those initial machines receive the updated TrustedCertList.pem file using the steps above in Identifying Endpoints.
- Continue to slowly open communication, expanding the number of machines accordingly.
- Monitor Console performance and that Agents are receiving the updated file in a timely fashion.
- If performance issues return, too many Agents using the Communication Key were allowed back in. Adjust the quantity or pacing of machines accordingly.