Расширения файлов на самом деле не управляют форматом или содержимым файла, хотя обычно они должны предоставлять как минимум частичное описание. Точно так же базовые имена (перед расширением) должны описывать то, что находится в файле, но не всегда делают это правильно. Важно то, что находится в файлах.
.key
обычно используется для одиночного закрытого ключа, но посмотрите на него, чтобы убедиться, а также определить, в каком формате он находится, потому что их много. Вы не должны никогда получать свой закрытый ключ от CA;он должен генерироваться локально, обычно на машине, где он будет использоваться, и, по крайней мере, «владельцем» или администратором этой машины. Может быть своего рода исключение, если вы говорите о внутреннем центре сертификации для компании, организации, агентства или офиса - в этом случае лицо, управляющее центром сертификации, может быть тем же лицом, которое отвечает за безопасность на всех компьютерах. - или наоборот, в зависимости от вашей точки зрения - и для них может иметь смысл сгенерировать как ключ, так и сертификат.
.pem
используется для лотов вещей в формате PEM , и то, что содержимое этого файла (или есть) имеет значение больше, чем факт этогоБыть PEM. Посмотрите на первую строку -----BEGIN (somewords)-----
и посмотрите, что это слово (а). За этим должны следовать сразу или после нескольких строк заголовка данные в base64 (сплошной блок букв, цифр и специальных символов + / =), затем соответствующая строка -----END (somewords)-----
. Если за строкой END следует другой похожий блок или несколько, посмотрите на все из них.
.cer
обычно используется для сертификатов в формате DER (двоичный) или PEM (как указано выше). .p7b
аналогичным образом используется для «фиктивных» сообщений PKCS7, содержащих сертификаты - особенно сертификаты, используемые в цепочке - в DER или PEM. Что еще более важно, p7b иногда используется для всей цепочки , включая сертификат конечного объекта (сервера), а иногда и остальную часть цепочки , за исключением сертификата EE, и имеет значение, какой. Если у вас есть OpenSSL - или вы можете его получить (например, установив пакет или для Windows, я рекомендую установщик из http://www.slproweb.com/products/Win32OpenSSL.html) или можете переместить ваши данные на компьютер, на котором он есть, - тогда выполните:
# if the p7b file is in PEM format (you can see ----BEGIN PKCS7----- line)
openssl pkcs7 -in file.p7b -print_certs
# if the p7b file is in DER format (looks like garbage in a text editor or display)
openssl pkcs7 -in file.p7b -inform der -print_certs
# for now look only at the subject= and issuer= lines to see
# for each cert in the file who it is for, and if/how they chain
Тогда:
, если файл .key
является закрытым ключом в одном из форматов PEM, поддерживаемых OpenSSL, вы можете использовать это;В противном случае, если .key
является приватным ключом в каком-либо другом формате, или .pem
является или включает приватный ключ в каком-либо формате, вам необходимо преобразовать и / или извлечь его: расскажите нам больше о том, как эти файлы выглядят.
, если файл .p7b
имеет формат PEM или DER, поместите его расширенный вывод (сверху) в файл. Если это включает сертификат EE, пропустите следующий шаг.
, если файл .p7b
не включает сертификат EE, но файл .cer
является этим сертификатом, если в формате PEMпросто добавьте его в файл, содержащий вывод .p7b
;если в формате DER, то конвертируйте его с openssl x509 -in file.cer -inform der
и добавьте , что .
, если теперь у вас есть закрытый ключ в одном из форматов PEM, поддерживаемых OpenSSL, ицепочка сертификатов, включая сертификат EE в формате PEM, do
openssl pkcs12 -export -in chain.pem -inkey key.pem -out newfile.p12 [-name x]
# the -name option provides the 'alias' used by Java
# if not specified it defaults to the numeral 1 (one)