El ticket de soporte pregunta qué certificado está dentro del paquete VPN, y el primer instinto es exportarlo todo y adjuntarlo. Un archivo P12 empaqueta certificados y material de clave privada en un solo contenedor, así que exportar todo es justo lo que no conviene enviar. El comando que responde a la pregunta es un problema de selección, no de conversión. Cuatro opciones deciden qué mitad del contenedor obtiene, y dos de ellas suenan más seguras de lo que son.

Empiece por leer el contenedor en lugar de vaciarlo.

Qué contiene realmente un archivo PKCS12

Un contenedor PKCS12 contiene uno o varios certificados, posiblemente una clave privada y un código de autenticación de mensaje sobre el contenido. Los certificados pueden incluir el certificado hoja de su identidad de cliente y los intermedios que lo encadenan a una CA. La clave, cuando está presente, es lo que convierte el archivo en un secreto en lugar de un documento.

Esa distinción es la razón por la que existe -nokeys y por la que es la opción que necesita esta tarea.

Leer el paquete sin escribir la clave

La forma de inspección imprime la estructura y los detalles de los algoritmos y no escribe nada: openssl pkcs12 -in client.p12 -info -noout. Pide la contraseña de importación, que es el lugar correcto para ese valor, y le dice si el archivo contiene una clave. Use -passin env:PKCS12_PASS cuando la contraseña no se pueda teclear, porque una contraseña dentro de un comando de shell es una contraseña en la lista de procesos. Este paso no exporta nada, que es precisamente la idea.

Lea la salida para tres cosas: cuántos certificados hay, si hay una clave presente y qué algoritmos la protegen.

Use -nokeys y no lo confunda con -nocerts

-nokeys excluye las claves privadas y deja los certificados. -clcerts restringe eso a los certificados de cliente, -cacerts lo restringe a los certificados de CA, y esos dos son filtros en lugar de alternativas. -nocerts se lee como la forma segura de la misma idea y significa lo contrario: sin certificados, lo que deja solo claves. Mezclarlo en una exportación de certificados es como una clave privada acaba en el disco.

La forma de dos líneas que produce un archivo de certificados y un archivo de CA, y nada más, es:

openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pem

Los paquetes antiguos necesitan -legacy en OpenSSL 3 para leer su cifrado más antiguo, y esa opción cambia lo que acepta el analizador, no lo que emite. Si el análisis falla con un error de algoritmo no compatible, añadir -legacy es el primer paso correcto y omitir la comprobación del MAC no lo es.

Compruebe la salida, no el código de salida

Un estado de salida cero dice que el comando se ejecutó, no que el archivo contenga lo que espera. Cuente los certificados en la salida y lea el sujeto y las fechas: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. Compare la huella con la que espera el equipo de soporte, porque un paquete con dos certificados de cliente produce un archivo con dos bloques y la mayoría de las herramientas solo leen el primero. Propósito, confianza y coincidencia de clave son de nuevo pruebas separadas.

Un certificado que se analiza es un certificado que se analiza. No es un certificado que el VPN acepte.

Decida si necesita archivos

Si el cliente receptor importa PKCS12 directamente, enviar el paquete original por un canal aprobado con la contraseña aparte es más sencillo y conserva la protección. La extracción sirve para la inspección, para un cliente que necesita PEM o para un caso de soporte que pidió un artefacto concreto. Cada extracción elimina una capa y debería tener un motivo.

Los certificados públicos no contienen la clave privada, pero sí contienen nombres y datos de la organización. Comparta los campos que pidió el ticket en lugar del archivo, salvo que lo solicitado sea el archivo.

Artículos relacionados