OpenVPN tls-ciphersuites fronte a tls-version-min: que impón cada un
Unha lista de suites de TLS 1.3 non limita a versión do protocolo, e show-tls só mostra o soporte local. Comproba a política, as suites e os resultados negociados por separado.
Tres feitos distintos colápsanse nunha soa liña na maioría dos debates sobre OpenVPN e TLS: que pode facer a túa compilación de cliente, que permite o perfil e que negociou realmente a sesión. Unha lista curta de suites de TLS 1.3 só responde a medias a pregunta do medio, e non di nada sobre o límite inferior da versión do protocolo. Percorre as comprobacións seguintes en orde e detente na primeira que non se cumpra, porque cada comprobación posterior dá por feito que as anteriores están resoltas.
Comproba a compilación antes de ler calquera lista
Unha directiva de configuración non pode engadir soporte de protocolo a un binario que carece del. Comeza polo banner de versión, que nomea a biblioteca criptográfica compilada:
openvpn --version
Unha compilación 2.6 ligada con OpenSSL acepta tanto tls-cipher como tls-ciphersuites. Unha compilación con mbed TLS non ten ningunha selección de suites de TLS 1.3, e o manual 2.6 marca tls-ciphersuites como unha opción de OpenSSL. Se o servidor se recompila con outro backend, o mesmo perfil pode cambiar de comportamento sen que cambie unha soa liña de configuración.
Xa que estás aquí, executa openvpn --show-tls e garda a saída. É o inventario co que compararás máis adiante, e é barato capturalo antes de que alguén comece a editar perfís.
Escribe o banner e a lista no tícket de cambio, non nunha xanela de chat. Cando dúas persoas discuten se un cliente podería ofrecer unha suite dentro de seis semanas, a saída capturada resólveo nunha liña.
Mantén os límites de versión separados das listas de cifrados
No manual 2.6 estes son tres controis, non un:
tls-cipherfixa a política de cifrados para TLS 1.2 e anteriores, e pásase á lista de cifrados de OpenSSL;tls-ciphersuitesselecciona suites de TLS 1.3;tls-version-minetls-version-maxlimitan as versións de protocolo que a conexión pode usar.
Así que unha lista de suites de TLS 1.3 coidadosamente recortada non demostra nada sobre que unha versión anterior siga permitida. Se o requisito é «só TLS 1.3», sosténeo o límite inferior de versión, e a lista de suites só estreita as opcións dentro dese límite:
tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
Ese par fai dous traballos. Borrar unha das liñas deixa a outra impoñendo menos do que pensas, e ese é xustamente o fallo que toda esta comprobación existe para atrapar.
A canle de datos é un cuarto control. data-ciphers negocia o cifrado simétrico dentro do túnel, e o seu resultado non di nada sobre a versión de TLS da canle de control. Ver AES-256-GCM no resumo da sesión non é evidencia sobre TLS 1.3 en ningún sentido.
Le show-tls como un inventario local
--show-tls enumera as suites que admite a biblioteca criptográfica coa que se ligou este binario, por orde de preferencia. Non é un informe da pasarela. O manual di explicitamente que a lista procede da biblioteca local, o que significa que un portátil con OpenSSL 3.x e un router cunha compilación máis antiga imprimirán listas distintas mentres falan co mesmo servidor.
| Evidence | What it actually describes |
|---|---|
--show-tls output | Capabilities of this client build and its library |
| Profile directives | What this attempt is allowed to offer |
| Session log line | What this one negotiation selected |
Supón que un cliente admite as suites A, B e C e que unha sesión escolle B. Iso non establece nada sobre se o servidor permite A ou C, nin sobre se B é a súa única opción permitida. Mantén as tres filas separadas e a maioría dos fíos de TLS confusos resolveranse sós.
O inventario segue merecendo a pena conservalo. Cando unha sesión falla, comparar a lista da biblioteca coa do perfil diche se o cliente tiña algunha posibilidade de ofrecer o que quería o servidor. Tamén mostra se un cambio de backend retirou en silencio TLS_CHACHA20_POLY1305_SHA256 do conxunto do que dependen os clientes máis antigos — o tipo de regresión que se manifesta como un feixe de usuarios que non poden conectarse mentres ninguén máis nota nada.
Pregúntalle á pasarela algo que poida responder
Se administras o servizo, inspecciona a configuración efectiva da instancia en execución en lugar dun ficheiro no disco. Pode que OpenVPN se iniciase cunha ruta --config distinta, que cargue inclusións e que non se reiniciase desde a edición. A política do daemon en execución é a que atopan os clientes.
Se non o administras, pide ao operador os requisitos de cliente admitidos ou unha proba de aceptación acoutada. Un intento rexeitado non é automaticamente unha suite rexeitada: un límite inferior de versión, comprobacións de identidade de certificado como remote-cert-tls, ou un desaxuste entre tls-auth e tls-crypt poden terminar o intercambio antes de que a selección de suites importe. Le o erro do servidor antes de cambiar a lista do cliente, porque «handshake failed» cobre catro causas distintas e só unha delas é un desaxuste de cifrado.
Apuntar openssl s_client ao porto VPN tampouco reproduce a pregunta. A canle de control funciona dentro do propio encapsulado de OpenVPN, así que unha sonda TLS cru proba un protocolo distinto nun porto que espera outra cousa. Calquera conclusión que se saque dela é sobre a sonda, non sobre o túnel.
Rexistra dous resultados e manténos separados
Unha sesión permitida recente produce unha liña da canle de control que nomea a versión do protocolo e o cifrado seleccionado, e unha liña separada da canle de datos que nomea o cifrado do túnel. Captura ambas coa versión do cliente e o nome do perfil, e anota que instancia do servidor respondeu:
openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt
Logo le as dúas liñas dese ficheiro en lugar de memoria. O par é a evidencia; un nome de suite por si só é unha preferencia, e o límite de versión é unha afirmación separada sobre que rexeita o servidor.
Executa as comprobacións nesta orde. Confirma a compilación e o backend con --version. Captura --show-tls antes de cambiar nada. Enuncia o límite inferior de versión requirido por separado da lista de suites. Confirma a política efectiva da instancia en execución co seu propietario. Observa unha sesión permitida e, se o plan o permite, un intento rexeitado cunha versión anterior. Rexistra os resultados da canle de control e da canle de datos como achados separados.
Se un cliente requirido non pode acadar un novo mínimo, toma esa decisión de migración ou excepción de forma explícita en lugar de baixar en silencio unha regra de aceptación non relacionada para que o despregamento pareza rematado.