Como resolve OpenVPN o certificado e a chave: PEM incorporado ou ruta
A mesma directiva leva unha ruta de ficheiro ou un obxecto PEM incorporado. Lea cal das dúas usa o perfil cargado antes de mover certificados a calquera sitio.
A mensaxe di que OpenVPN non pode cargar un certificado incorporado, e o nome de ficheiro que ten na cabeza di o contrario. O que recibiu o analizador importa máis que o que contén o sistema de ficheiros, porque a directiva cert acepta dous tipos de valor completamente distintos. Un é unha ruta que abre; o outro é texto PEM que chegou dentro da configuración. Ata que saiba que forma recibiu o cliente en execución, cada corrección é unha suposición.
Dúas formas de almacenamento, unha directiva
As directivas cert, key e ca aceptan cada unha unha ruta ou un bloque incorporado. Cando o valor é unha ruta, OpenVPN abre ese ficheiro e le o obxecto do disco. Cando a configuración contén un bloque delimitado por etiquetas cert, a mesma directiva consome no seu lugar o contido entre esas etiquetas, e non intervén ningún ficheiro aparte.
As dúas formas producen ao final o mesmo tipo de obxecto, por iso un despregamento que funciona pode pasar dunha a outra sen ningún outro cambio. Un perfil que leva un certificado de cliente e unha chave privada incorporados é autosuficiente, e copialo a outra máquina funciona sen copiar tamén un directorio de certificados.
O contrario non é certo. Deixar client.crt xunto a un perfil que incorpora os seus propios datos non cambia nada, porque nada na configuración fai referencia a ese ficheiro. É a razón máis habitual pola que un ficheiro que existe claramente parece ignorarse.
Como un bloque incorporado se converte nun obxecto
O contido incorporado extráese da configuración e entrégase ao analizador PEM como texto. Ese analizador espera os límites habituais: unha liña BEGIN, unha carga base64 e unha liña END correspondente. Se o bloque foi truncado por unha copia fallida, envolto en HTML por unha páxina de descarga ou aberto nun editor que normalizou os guións, o analizador falla nun contido que parece presente.
<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>
Por iso tamén a redacción do erro é enganosa. A palabra incorporado describe onde mirou o cargador, non que atopou alí. Un ficheiro nomeado nunha configuración e un obxecto incorporado nela poden producir a mesma queixa cando os bytes subxacentes son inservibles.
Comprobe que forma usa realmente o perfil cargado, non que ficheiro abriu por casualidade o seu editor:
grep -nE '^(ca|cert|key) |^<(ca|cert|key)>' client.ovpn
Como se resolve unha referencia de ruta
Un valor de ruta ábrese en relación co directorio de traballo do cliente, non co directorio que contén a configuración. Baixo systemd ese directorio de traballo é o que establece a unidade, e unha execución interactiva desde a súa shell herda algo completamente distinto. Por iso o mesmo ficheiro de configuración pode funcionar cando o proba a man e fallar como servizo.
As rutas relativas herdan a mesma ambigüidade. Cando vexa un nome de ficheiro solto, pregunte cal é o directorio actual do proceso en produción en lugar de supor que coincide co seu terminal.
Para un certificado almacenado por separado, unha análise sen conexión confirma o obxecto antes de depurar calquera cousa por riba:
openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -check
Eses comandos demostran que os ficheiros son lexibles e estruturalmente válidos. Non demostran que o par confíe no emisor, que o certificado siga dentro da súa xanela de validez ou que a chave lle corresponda.
Que pode e que non pode dicirlle o erro do analizador
Un fallo de análise localiza o problema nunha entrada e nunha etapa. Non lle di cal das dúas formas de almacenamento usou o cliente, nin lle di se o obxecto tería sido aceptado. Son preguntas separadas con probas separadas.
Unha vez que a análise ten éxito, o seguinte fallo pertence a unha etapa posterior. Un rexeitamento de confianza, unha discrepancia de propósito ou unha discrepancia de chave infórmaos o par ou a capa TLS, non o cargador. Substituír o mesmo ficheiro unha e outra vez non moverá ese erro.
Manteña a metade sensible fóra dos informes públicos mentres investiga. Comparta os nomes das directivas, o texto do erro e a estrutura do bloque, co material de chave e calquera carga identificativa eliminados. O manual openvpn(8) documenta as dúas formas das directivas de ficheiro e o comportamento do directorio de traballo que hai detrás.