fix(deps): replace bouncycastle jdk15on with jdk18on 1.85 - #4312
Merged
Aias00 merged 4 commits intoAug 17, 2026
Merged
Conversation
Duansg
approved these changes
Aug 13, 2026
orangeCatDeveloper
force-pushed
the
fix/3540-bouncycastle-jdk18on
branch
2 times, most recently
from
August 14, 2026 06:20
e7a8273 to
01bc750
Compare
orangeCatDeveloper
force-pushed
the
fix/3540-bouncycastle-jdk18on
branch
from
August 15, 2026 07:46
01bc750 to
9f78312
Compare
Aias00
approved these changes
Aug 17, 2026
Aias00
left a comment
Contributor
There was a problem hiding this comment.
Reviewed the full diff (14 files). Clean, well-scoped dependency upgrade — this is exactly how a drop-in crypto bump should be done.
What's good
- Direct swap in
collector-basic:bcpkix-jdk15on:1.68→bcpkix-jdk18on:${bouncycastle.version}, with the version centralized once in the root pom. - Transitive path in
collector-nebulagraphcorrectly excludes bothbcpkix-jdk15onandbcprov-jdk15onfrom the vesoft client and re-addsbcpkix-jdk18onexplicitly;bcprov/bcutilarrive transitively. No missing-class risk at runtime. - License hygiene: the three manifest files (
material/licenses/{root,backend,collector}/LICENSE) and the six per-artifactLICENSE-bc*-jdk15on.txtfiles are renamed/updated tojdk18on/1.85, so the binary distribution no longer declares components it doesn't ship. - Verification is strong:
MqttSslFactoryTestparses both PKCS#1 and PKCS#8 client keys through the productiongetMslSocketFactorypath;VesontSslBouncyCastleSmokeTestfeeds a BC-generated cert through the vesoft client's ownSslUtil.
Minor / optional (non-blocking)
- Please confirm
mvn dependency:treeshows zerojdk15onartifacts across the whole reactor (including the docker imagelib/), since the PR claims this — a CI log snippet would close it. - Consider promoting the mina-sshd PEM-handshake test into CI (not just local) so the BC-backed key parsing of mina-sshd is guard-railed going forward.
- Tiny nit: the commented-out
checker-qualline inmaterial/licenses/backend/LICENSEis untouched — harmless, but you're already in that file.
Approving.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's changed?
Fixes #3540: the project ships BouncyCastle from the abandoned
jdk15online (bcpkix-jdk15on:1.68, 2020) — it no longer receives releases, so its known CVEs will never be patched, and every dependency scan flags it. The maintainedjdk18online shares package and class names, so it is a drop-in replacement; the version is managed once in the root pom:jdk15onenters the build through two different doors, fixed differently:1. Direct dependency (
hertzbeat-collector-basic)MqttSslFactoryuses BC to parse client certificates/keys for MQTT TLS auth, via a hardcodedbcpkix-jdk15on:1.68in the module pom. Straight swap tobcpkix-jdk18on:${bouncycastle.version}.2. Transitive dependency (
hertzbeat-collector-nebulagraph)The vesoft NebulaGraph client brings jdk15on with it — we don't control its pom, so the module now excludes the jdk15on jars from the vesoft dependency and supplies jdk18on explicitly. The vesoft client was compiled against jdk15on, but since both lines expose identical packages/classes it links against jdk18on unchanged — proven by a smoke test that runs its
SslUtilon the new jars.License material
material/licensesis bundled into the binary distribution, so the three manifests and the six per-artifactLICENSE-bc*-*.txtfiles are renamed/updated tojdk18on/1.85 — otherwise the release would declare components it no longer ships.Verification
Dependency tree, before → after:
jdk15onno longer appears anywhere in the reactor, and the docker image lib/ carries only the three jdk18on jars. Every BC consumer was exercised against 1.85, not just compiled:MqttSslFactoryTestparses generated PKCS#1 and PKCS#8 private keys through the productiongetMslSocketFactorypath.VesoftSslBouncyCastleSmokeTestfeeds a BC-generated certificate through the vesoft client's ownSslUtil.SshHelper.getConnectSessioncompleted a real handshake (AUTHED) against OpenSSH 9.6.Full test suites of all modules with BC on the classpath (collector-common, collector-basic, collector-nebulagraph, collector-collector, push) pass.
Checklist
Add or update API