Как объединить различные сертификаты в один .pem

35

Я только что закончил читать эту замечательную ветку, объясняющую различные форматы SSL.

Теперь я по существу ищу противоположность Как разделить файл PEM

Есть 4 файла, которые я хочу объединить, изначально созданные для Apache, я смотрю на файлы, указанные

  • SSLCertificateFile
  • SSLCertificateKeyFile
  • SSLCertificateChainFile
  • SSLCACertificateFile

Что меня больше всего интересует, так это порядок файлов в консолидированном деривативе, это важно? НАПРИМЕР. если бы я просто catсобрал их вместе в том порядке, в котором они указаны выше, в .pem , это было бы допустимо, или они должны быть заказаны определенным образом?

К вашему сведению, я делаю это ради использования этих сертификатов как объединенного единственного .pem в SimpleSAMLphp .

quickshiftin
источник
В заказе должен быть закрытый ключ, промежуточные сертификаты, ваш сертификат.
Зоредаче
Как насчет ЦС, разве это не корень цепочки, и поэтому он будет идти после цепочки в объединенном файле? Или это может быть полностью опущено?
quickshiftin
Звучит так, как будто это не обязательно , сейчас я буду кататься без него.
quickshiftin

Ответы:

43

Порядок имеет значение, в соответствии с RFC 4346 .

Вот цитата, взятая непосредственно из 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.

На основании этой информации сначала должен стоять сертификат сервера, затем любые промежуточные сертификаты и, наконец, корневой сертификат доверенного органа (если он самоподписан). Я не смог найти никакой информации о закрытом ключе, но я думаю, что это не должно иметь значения, потому что закрытый ключ в pem легко идентифицировать, поскольку он начинается и заканчивается текстом ниже, в котором есть ключевое слово PRIVATE.

 -----BEGIN RSA PRIVATE KEY-----
 -----END RSA PRIVATE KEY-----
Даниил Т.
источник
2
cat site.crt root.crt site.key> site.pem
curveorzos
6

Вот команда для объединения с помощью cat

cat first_cert.pem second_cert.pem > combined_cert.pem
tidileboss
источник
3
Это ответ о том, как объединить любые два сертификата, но не о том, как объединить / объединить сертификаты для Apache.
asdmin
Это не совсем, чтобы ответить на вопрос, принятый ответ достаточно хорош. Я просто предоставляю дополнительную информацию о том, как объединять, так как в оригинальном постере говорилось об использовании cat, я подумал, что это может помочь другим.
Tidileboss
2
Ваш ответ не указывает, в каком порядке файлы должны быть объединены (у вас просто есть «first_cert.pem» и «second_cert.pem»). Правильный ответ будетcat my_site.pem ca_chain.pem my_site.key > combined_cert.pem
Доктор J