Dous perfís, un conecta e o outro non, e a forma rápida de ver por que é un diff. O problema é que o mesmo diff imprime a clave privada incrustada, a clave estática e calquera bloque de credenciais que leve o ficheiro, e a xente pega a saída nun chat antes de decatarse. Decidir que está a comparar vai antes de executar o comando. Compare estrutura e roles en copias protexidas, e construa un ficheiro redactado á parte cando outra persoa teña que velo.

Que leva realmente un ficheiro .ovpn

Un ficheiro .ovpn é unha configuración con bloques incrustados opcionais. Pode conter un certificado CA, un certificado de cliente, unha clave privada, unha clave tls-auth ou tls-crypt, e directivas que apuntan a ficheiros externos ou piden credenciais. Dous ficheiros poden parecer case idénticos e diferir só dentro dun bloque, ou nunha directiva que cambia o transporte por completo. O número de liñas non lle di nada sobre cal desas cousas ocorreu.

Unha diferenza dentro dun bloque de clave non é proba pública de nada. Un certificado reemitido e un con clave renovada poden producir a mesma forma de cambio, así que o desaxuste do bloque di que o material é distinto, non que decisión o produciu. Tráteo como un sinal para comparar campos, non como un achado.

Compare por rol, non por liña

Siga a orde propia da conexión: primeiro o extremo e o transporte, despois a confianza e a identidade esperada, despois a autenticación de usuario, despois as rutas, DNS e os ganchos de script. Esa secuencia coincide co que fai o cliente, así que a primeira diferenza que atope é o primeiro que puido ter roto a conexión. Comparar por orde alfabética, en cambio, dispersa os axustes relacionados por toda a saída.

Unha pasada consciente dos campos mira estes elementos, nesa orde. Todo o que o cliente pide de forma interactiva pertence á fila de autenticación e non ás filas de confianza.

  • remote, proto e porto, incluído cada bloque de conexión.
  • ca e cert: emisor, suxeito e data de caducidade.
  • Se existe unha clave privada, nunca que contén.
  • tls-auth ou tls-crypt presenza e dirección da clave.
  • Directivas de autenticación, incluída calquera referencia a un ficheiro de credenciais.
  • Rutas, opcións de DNS e ganchos de script que se executan ao conectar.

Cando un ficheiro contén varios bloques de conexión, manteña cada opción co seu extremo. Comparar só a primeira liña remote pode pasar por alto a alternativa que o cliente escolle realmente nesta rede.

Por que un diff simple é a ferramenta equivocada

Un diff simple está feito para texto, non para segredos. Imprimirá de bo grado unha clave privada no historial da pantalla, e non lle dirá que a directiva que mira non ten nada que ver co fallo. As extraccións de campos son á vez máis seguras e máis lexibles, porque o material do certificado se pode comparar como metadatos en lugar de bytes.

openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn

Os dous primeiros comandos imprimen identidade e validez sen tocar a clave, así que a súa saída é segura de pegar. O grep imprime nomes e valores de directivas pero nunca os corpos dos bloques, o que o converte na primeira pasada correcta cando sospeita unha diferenza de transporte ou de encamiñamento. Se hai que comparar un bloque, compare o seu hash en lugar do contido.

Construa unha copia redactada para o tícket

Elimine os segredos reais e os identificadores innecesarios mantendo os nomes dos campos e suficiente estrutura para explicar a diferenza. Un marcador da mesma forma segue revelando onde está o material e canto medía, así que decida se mesmo iso é aceptable. Revise o propio anexo final en lugar de confiar no comando que lembra ter executado. Non edite o orixinal de traballo só para producir un exemplo, porque un perfil redactado non é necesariamente executábel e nunca debe reimportarse.

Manteña os orixinais identificables polo nome de ficheiro e o hash en lugar de copialos en tres directorios con nomes parecidos. Unha cadea de hash abonda para demostrar que ficheiro se revisou e non custa nada se se filtra. Pode as copias cando se peche o cambio, para que a seguinte persoa herde un único ficheiro autoritativo.

Manteña a comparación ligada a un fallo

Unha comparación vale o seu custo cando responde unha pregunta sobre unha importación ou un fallo de conexión. Nomee primeiro o paso que falla e despois compare só os campos dos que depende ese paso; xuntar todas as credenciais do cliente nun só directorio fai máis probable a seguinte filtración e máis lento o seguinte diagnóstico. Canto máis estreita a pregunta, máis curta a lista de campos que poden respondela.

Se un ficheiro novo veu do operador, confirme a súa vía de distribución antes de substituír material de confianza. Despois do cambio, inspeccione a copia importada que o cliente escolleu realmente e o resultado negociado, porque outra versión do cliente pode ignorar unha directiva ou lela de forma distinta. O ficheiro no disco non é proba da conexión que se executou. A semántica das directivas está no manual de OpenVPN 2.6.

Artigos relacionados