O ticket de soporte pregunta que certificado está dentro do paquete VPN, e o primeiro impulso é exportalo todo e adxuntalo. Un ficheiro P12 empaqueta certificados e material de chave privada nun só contedor, así que exportalo todo é xustamente o que non debería enviar. A orde que responde á pregunta é un problema de selección, non de conversión. Catro opcións deciden que metade do contedor obtén, e dúas delas soan máis seguras do que son.

Comece lendo o contedor en lugar de baleiralo.

Que contén realmente un ficheiro PKCS12

Un contedor PKCS12 contén un ou máis certificados, posiblemente unha chave privada e un message authentication code sobre o contido. Os certificados poden incluír o certificado folla da súa identidade de cliente e os intermedios que o encadean a unha CA. A chave, cando está presente, é o que fai do ficheiro un segredo en lugar dun documento.

Esa distinción é a razón pola que existe -nokeys e pola que é a opción que precisa esta tarefa.

Ler o paquete sen escribir a chave

A forma de inspección imprime a estrutura e os detalles dos algoritmos e non escribe nada: openssl pkcs12 -in client.p12 -info -noout. Pide o contrasinal de importación, que é o lugar correcto para ese valor, e di se o ficheiro contén unha chave. Use -passin env:PKCS12_PASS cando o contrasinal non se poida teclear, porque un contrasinal dentro dunha orde de shell é un contrasinal na lista de procesos. Este paso non exporta nada, e ese é todo o punto.

Lea a saída para tres cousas: cantos certificados hai, se hai unha chave presente e que algoritmos a protexen.

Use -nokeys e non o confunda con -nocerts

-nokeys exclúe as chaves privadas e deixa os certificados. -clcerts restrinxe iso aos certificados de cliente, -cacerts restrinxeo aos certificados de CA, e eses dous son filtros en lugar de alternativas. -nocerts lese como a grafía segura da mesma idea e significa o contrario: sen certificados, o que deixa só chaves. Mesturalo nunha exportación de certificados é como unha chave privada acaba no disco.

A forma de dúas liñas que produce un ficheiro de certificados e un ficheiro de CA, e nada máis, é:

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

Os paquetes antigos necesitan -legacy en OpenSSL 3 para ler o seu cifrado máis antigo, e esa opción cambia o que acepta o analizador, non o que emite. Se a análise falla cun erro de algoritmo non compatible, engadir -legacy é o primeiro paso correcto e omitir a comprobación do MAC non o é.

Comprobe a saída, non o código de saída

Un estado de saída cero di que a orde se executou, non que o ficheiro conteña o que espera. Conte os certificados na saída e lea o suxeito e as datas: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. Compare a pegada coa que espera o equipo de soporte, porque un paquete con dous certificados de cliente produce un ficheiro con dous bloques e a maioría das ferramentas só len o primeiro. Propósito, confianza e coincidencia de chave son de novo probas separadas.

Un certificado que se analiza é un certificado que se analiza. Non é un certificado que o VPN acepte.

Decida se precisa ficheiros

Se o cliente receptor importa PKCS12 directamente, enviar o paquete orixinal por unha canle aprobada co contrasinal aparte é máis sinxelo e conserva a protección. A extracción serve para a inspección, para un cliente que precisa PEM ou para un caso de soporte que pediu un artefacto concreto. Cada extracción elimina unha capa e debería ter un motivo.

Os certificados públicos non conteñen a chave privada, pero si conteñen nomes e datos da organización. Comparta os campos que pediu o ticket en lugar do ficheiro, agás que o ficheiro sexa o que se pediu.

Artigos relacionados