Tengo un archivo PKCS12 que contiene la cadena de certificados completa y la clave privada. Necesito dividirlo en 3 archivos para una aplicación. Los 3 archivos que necesito son los siguientes (en formato PEM):
- un archivo de clave sin cifrar
- un archivo de certificado de cliente
- un archivo de certificado de CA (raíz y todo intermedio)
Esta es una tarea común que tengo que realizar, por lo que estoy buscando una manera de hacerlo sin ninguna edición manual de la salida.
Intenté lo siguiente:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>
Esto funciona bien, sin embargo, la salida contiene atributos de bolsa, que la aplicación no sabe cómo manejar.
Después de buscar, encontré una solución sugerida para pasar los resultados a través de x509 para quitar los atributos de la bolsa.
openssl x509 -in <clientcert.cer> -out <clientcert.cer>
Esto funciona, pero me encuentro con un problema en el archivo cacert. El archivo de salida solo contiene uno de los 3 certificados de la cadena.
¿Hay alguna manera de evitar incluir los atributos de la bolsa en la salida del comando pkcs12, o una forma de que la salida del comando x509 incluya todos los certificados? Además, si ejecutarlo a través de x509 es la solución más simple, ¿hay alguna forma de canalizar la salida de pkcs12 a x509 en lugar de escribir el archivo dos veces?
fuente