The tunnel comes up, the log shows a cipher, and the profile review moves on. Then a peer upgrade lands and the same profile fails with a message about no shared cipher, which sends people hunting for a directive to delete. The useful thing to understand is that data-ciphers describes a negotiation, not a setting. One side offers a list, the other picks from it, and the result is a single algorithm both support. Reading that exchange explains most of these failures before you change a line.

Two channels, two configurations

An OpenVPN session has a control channel and a data channel. The control channel runs the TLS handshake that authenticates the peers and negotiates keys. The data channel encrypts the packets that carry your traffic.

data-ciphers configures the second one. The control channel has its own options, and the profile's identity checks are a third, separate concern. A change to one does not fix the other, which is why a profile can look correct and still fail at a specific stage.

Keep the three in their own boxes when you read a config file.

Read the negotiation from the log

The client log names both results when the connection succeeds. One line reports the control channel and its TLS details, and another reports the data channel cipher that was selected.

Read both, because they answer different questions. A control-channel failure stops the connection before any data cipher matters. A data-channel mismatch appears after a successful handshake, with a message about no shared cipher.

Then compare the offered lists on both sides. A name that one peer's version or crypto backend does not provide cannot be selected, no matter how early it appears in the other peer's list.

How the selection actually happens

The server pushes its data-ciphers list to the client during the handshake, and the client selects the first entry in that list which it also supports. Order therefore belongs to the server's configuration, not to the client's.

That detail explains a class of confusing results. Reordering the client's list changes nothing while the server's list decides. Adding a cipher the client cannot provide changes nothing either, because the client has to be able to use the entry it picks.

Newer releases changed the default list and renamed the option that used to hold it, so two peers on different versions can disagree without anyone editing a profile. Check the version on each side before assuming a typo.

A list is not a strength ranking in the abstract. It is a set of candidates, and the selected one is the first mutually supported entry in the server's order. That is why two lists which look different can negotiate the same cipher. It is also why two lists which look identical can fail.

Older peers need a deliberate fallback

A peer that cannot negotiate at all, because it predates the mechanism or has it disabled, needs a documented compatibility arrangement. The fallback option exists for exactly that case and applies to peers that do not participate in negotiation.

That is not the same as enabling every legacy cipher to make a message disappear. A broad list weakens the session for every peer, including the ones that would have negotiated something strong.

Coordinate the two sides instead of editing unrelated algorithm names. If a server upgrade removed an old option, the fix belongs in the version plan, not in a scramble at the client.

Keep verification intact

A data-channel mismatch is not a reason to accept an unverified server. Certificate verification, the expected server name and the control-channel protection settings are separate from cipher selection and should survive any compatibility change.

Record the negotiated data cipher, the client version and the server version together, so the next comparison starts from facts rather than from the profile file.

After a supported correction, test the initial connection and a renegotiation, because a session that establishes once can still fail when keys are renewed.

If the tunnel establishes and sites still fail, the cipher is no longer the suspect. Continue with routing and DNS. Order of work: read both log lines, compare both lists, check versions, add a fallback only for a peer that needs one, then retest the renewal path.

ተዛማጅ ጽሑፎች