Cómo combinar varios certificados en un único .pem

35

Acabo de terminar de leer este excelente hilo que explica los diferentes formatos SSL.

Ahora estoy esencialmente buscando lo contrario de Cómo dividir un archivo PEM

Hay 4 archivos que quiero consolidar, creados originalmente para Apache, estoy viendo los archivos especificados por

  • SSLCertificateFile
  • SSLCertificateKeyFile
  • SSLCertificateChainFile
  • SSLCACertificateFile

Lo que más me interesa es el orden de los archivos en el derecho consolidado consolidado, ¿es eso importante? P.EJ. si tuviera que catjuntarlos en el orden en que aparecen arriba, en un .pem , ¿sería válido o deberían ordenarse de una manera específica?

FYI, estoy haciendo esto por el uso de estos certificados como un único .pem combinado en SimpleSAMLphp .

quickshiftin
fuente
El pedido debe ser clave privada, certificados intermedios, su certificado.
Zoredache
¿Qué pasa con la CA, no es esa la raíz de la cadena, y por lo tanto iría después de la cadena en el archivo consolidado? ¿O se puede omitir por completo?
quickshiftin
Parece que es opcional , lo rodaré sin él por ahora.
quickshiftin

Respuestas:

43

El orden sí importa, de acuerdo con RFC 4346 .

Aquí hay una cita tomada directamente del RFC:

  certificate_list
    This is a sequence (chain) of X.509v3 certificates.  The sender's
    certificate must come first in the list.  Each following
    certificate must directly certify the one preceding it.  Because
    certificate validation requires that root keys be distributed
    independently, the self-signed certificate that specifies the root
    certificate authority may optionally be omitted from the chain,
    under the assumption that the remote end must already possess it
    in order to validate it in any case.

Según esta información, el certificado del servidor debe ser lo primero, seguido de cualquier certificado intermedio, y finalmente el certificado de autoridad de confianza raíz (si está autofirmado). No pude encontrar ninguna información sobre la clave privada, pero creo que eso no debería importar porque una clave privada en pem es fácil de identificar, ya que comienza y termina con el texto a continuación, que tiene la palabra clave PRIVATE.

 -----BEGIN RSA PRIVATE KEY-----
 -----END RSA PRIVATE KEY-----
Daniel t.
fuente
2
cat site.crt root.crt site.key> site.pem
curveorzos
6

Aquí está el comando para combinar usando cat

cat first_cert.pem second_cert.pem > combined_cert.pem
tidileboss
fuente
3
Es una respuesta sobre cómo concatenar dos certificados, pero no cómo consolidar / concatenar certificados para Apache.
asdmin
Esto no es realmente para responder la pregunta, la respuesta aceptada es lo suficientemente buena. Solo proporciono información adicional sobre cómo concatenar, ya que el póster original hablaba sobre el uso del gato, pensé que podría ayudar a otros.
tidileboss
2
Su respuesta no indica en qué orden deben concatenarse los archivos (solo tiene "first_cert.pem" y "second_cert.pem"). La respuesta correcta seríacat my_site.pem ca_chain.pem my_site.key > combined_cert.pem
Doktor J