You reach the certificate page of a VPN setup, see a free self-signed option beside a paid public CA, and the question sounds like a security choice. It is really an audience choice. Both options encrypt the tunnel with the same primitives, and both become worthless if the private key leaks. What separates them is who makes the claim about the server's identity, and who is in a position to check that claim.

A certificate does two jobs that get confused

A certificate binds a public key to a name, and the key does the encryption and signing work. The signature on the certificate is a separate statement: some authority checked that the name belongs to this key holder. A self-signed certificate makes that statement about itself, which is no third-party claim at all.

Public websites need the third-party version, because visitors arrive with no prior relationship and rely on a browser's trust store. A VPN client is not a stranger. You give it the CA certificate, or pin the server certificate, inside the profile it installs, so verification runs against exactly the authority you chose. No commercial CA has to be involved for that check to mean anything.

The strength of the resulting session comes from the key size and cipher suite, not from the signer. That is why calling a self-signed certificate "less encrypted" is simply wrong; it is less widely vouched for, which is a different property.

Where a public CA earns its fee

The clearest case is the administration page. If colleagues, contractors or anyone else with no prepared profile must open the VPN server's web interface without a browser warning, a publicly trusted certificate removes that friction. The browser already trusts the signer, so there is nothing to import and nothing to explain.

That convenience has costs worth naming before you buy. Renewal has to be automated or the site breaks on a schedule, public certificates expose the hostname in certificate transparency logs, and issuance rate limits punish a script that retries too eagerly. None of those are reasons to avoid a public CA, but they are operational work that a private CA moves elsewhere.

What a public certificate does not do is authenticate your users. Client identity is a separate decision, made with client certificates, passwords or a second factor, and the CA that signs the server says nothing about who may connect to it.

Where a private CA fits a VPN

For a private VPN with a known set of clients, running your own CA is the conventional choice. You create the CA once, sign the server certificate with a name the clients will use, and distribute the CA certificate inside each profile. Every client then verifies the server against your authority, and no outside party learns the hostname.

The costs are real but bounded. Browsers will warn when someone opens the admin page directly, because the browser has no reason to trust your CA. Profile distribution becomes part of onboarding, and rotating the CA means touching every client. Those are acceptable prices for a service with ten or fifty known users and painful for a public endpoint with thousands.

One condition makes the whole arrangement valid: verification has to happen. A client configured to ignore certificate errors accepts any server that presents any certificate, so the identity guarantee disappears while the encryption remains. That setting is the actual weakness in most "self-signed is insecure" stories.

The CA private key decides what you can do later

The surprise tends to arrive months later, when you want to add a device. Issuing a client certificate requires the CA private key, and so does producing a revocation list. If you inherited a server that has the certificate and key files but not the CA key, you cannot sign anything new. Your options are to rebuild the PKI and hand every client a new CA certificate, or to switch to password authentication, which is a different security model and does not restore what was lost.

Two smaller traps live in the same territory. The easy-rsa scripts assume you are standing in the directory that holds them, so a missing-file error usually means the wrong location rather than a damaged installation. And a certificate-only design is perfectly legitimate: you can require client certificates with no pre-shared key, provided each client has one and the server verifies the chain.

Issue one certificate per device rather than one shared client certificate for the whole team. A lost laptop then costs you a single revocation instead of a reissue for everybody.

Check what you inherited

Before planning any change, read the certificate you already have:

$ openssl x509 -in server.crt -noout -subject -issuer -dates
subject=CN = vpn.example.net
issuer=CN = vpn.example.net
notAfter=Nov  3 09:00:00 2027 GMT
$ openssl verify -CAfile ca.crt server.crt
server.crt: OK

If the issuer equals the subject, the certificate is self-signed, which is a design choice rather than a defect. The dates tell you when renewal becomes someone's problem, and a successful verify against the CA you intend to ship confirms the chain works before a single client tries it.

Then choose by audience and distribution: public CA when unknown browsers must trust the admin page, private CA when every client receives a profile you control. Neither answer is more encrypted than the other.

Qillqakuna t'inkisqa