Advice to patch the client so that it validates certificates is too vague to act on. It could describe a fixed software defect, an old build from one provider, or a profile that never asked for the check. Those are three different changes with three different owners. Acting on the sentence without knowing which one you face is how a working client gets modified for no reason.

Separate the three claims

A software defect has an advisory, affected versions and a fixed release. A provider build has its own distribution channel and its own update cadence. A profile omission has neither, because the executable is fine and the configuration asks for less than you assumed. Until the claim names one of those three, there is nothing to test.

Write the claim in a single sentence before you search for it. If the sentence cannot name what is broken, the search has no target and every result looks relevant.

ClaimEvidence that settles itWho owns the change
Software defectAdvisory naming affected versionsPackage or product maintainer
Provider buildRelease notes for that clientThe provider
Profile omissionThe configuration actually loadedWhoever owns the profile

Find the executable that really runs

Identify what starts the connection before you look at any version. A distribution service, a desktop plugin and a vendor application can each use a different executable or engine. A version printed by whichever binary happens to be on the shell's search path is not an inventory of the machine. Read the unit or process that actually performed the connection.

systemctl cat openvpn-client@*.service
ps -o pid,cmd -C openvpn
apt-cache policy openvpn network-manager-openvpn

The package query reports what local metadata believes is installed and available, and that cache can be stale, so refresh it first. It also says nothing about whether the running service loaded a binary installed five minutes ago. Compare the package record with the process that is actually connected.

Package evidence instead of version impressions

Distribution security maintenance frequently backports fixes, so an older-looking upstream version can still contain the patch. The reverse also holds: a package from an unfamiliar repository carries no automatic claim to current maintenance. Read the release's support status rather than the version number.

That distinction is the difference between a real gap and a number that merely looks old. Record the repository the package came from, because the same version string can arrive through very different channels with very different support.

Configuration is the other half

A maintained executable still needs a profile that asks for the checks you believe are in place. Trust anchors, the peer's intended role and the expected server name are related but separate decisions. A role check is not a name check, and neither substitutes for the other. If the warning is about configuration, the fix belongs to whoever owns the profile.

Do not install an arbitrary patch to compensate for an unverified profile, and do not add a directive to repair a genuine implementation defect. Both mistakes feel like progress, which is why both keep happening.

Decide with evidence in the record

The decision follows from what you established. A documented affected package calls for its supported update, an unsupported platform needs a migration path, and a provider client needs that provider's guidance. An ambiguous instruction needs an advisory and an affected component before any of those apply.

Keep the active client, the full version, the advisory and the profile owner together in the change record. That is stronger than a tutorial reference, and it is what the next person will actually need.

Erthyglow kevrennek