Может кто-нибудь сказать мне правильный путь / команду для извлечения / преобразования файлов сертификата .crt
и закрытого ключа .key
из .pem
файла? Я просто прочитал, что они взаимозаменяемы, но не как.
Может кто-нибудь сказать мне правильный путь / команду для извлечения / преобразования файлов сертификата .crt
и закрытого ключа .key
из .pem
файла? Я просто прочитал, что они взаимозаменяемы, но не как.
Ответы:
Я был в состоянии преобразовать Pem в CRT, используя это:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
openssl pkey -in mumble.pem -out mumble-key.pem
Если версия OpenSSL старше 1.0.0, извлечь ключ как ключ RSA:openssl rsa -in mumble.pem -out mumble-key.pem
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
ошибку.
Конвертация с использованием OpenSSL
Эти команды позволяют преобразовывать сертификаты и ключи в различные форматы, чтобы сделать их совместимыми с определенными типами серверов или программного обеспечения.
Конвертировать файл DER (.crt .cer .der) в PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
Конвертировать файл PEM в DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Преобразовать файл PKCS # 12 (.pfx .p12), содержащий закрытый ключ и сертификаты, в PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
Преобразовать файл сертификата PEM и закрытый ключ в PKCS # 12 (.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Конвертировать PEM в CRT (файл .CRT)
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL конвертировать PEM
Конвертировать PEM в DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Конвертировать PEM в P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
Конвертировать PEM в PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL Convert DER
Конвертировать DER в PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL Convert P7B
Конвертировать P7B в PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Конвертировать P7B в PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Convert PFX
Конвертировать PFX в PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Генерация ключей RSA с помощью OpenSSL
Используя OpenSSL в командной строке, вам сначала нужно будет сгенерировать открытый и закрытый ключ, вы должны защитить этот файл паролем с помощью аргумента -passout, есть много разных форм, которые этот аргумент может принимать, поэтому обратитесь к документации OpenSSL по этому поводу.
openssl genrsa -out private.pem 1024
Это создает файл ключа с именем private.pem, который использует 1024 бита. Этот файл на самом деле имеет как закрытый, так и открытый ключи, поэтому вы должны извлечь открытый из этого файла:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
or
openssl rsa -in private.pem -pubout > public.pem
or
openssl rsa -in private.pem -pubout -out public.pem
Теперь у вас будет public.pem, содержащий только ваш открытый ключ, вы можете свободно делиться этим с третьими лицами. Вы можете проверить все это, просто зашифровав что-то самостоятельно, используя свой открытый ключ, а затем расшифровав, используя свой закрытый ключ. Сначала нам нужно зашифровать немного данных:
Пример файла:
echo 'too many secrets' > file.txt
Теперь у вас есть некоторые данные в file.txt, давайте зашифруем их, используя OpenSSL и открытый ключ:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
Это создает зашифрованную версию file.txt, называющую его file.ssl, если вы посмотрите на этот файл, это просто бинарный мусор, ни для кого не очень полезный. Теперь вы можете расшифровать его с помощью закрытого ключа:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
Теперь у вас будет незашифрованный файл в decrypted.txt:
cat decrypted.txt
|output -> too many secrets
Опции RSA TOOLS в OpenSSL
ИМЯ
rsa - инструмент обработки ключей RSA
СИНТАКСИС
openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in имя файла] [-passin arg] [-out имя файла] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-desa] [-text] [-noout] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]
ОПИСАНИЕ
Команда rsa обрабатывает ключи RSA. Они могут быть преобразованы между различными формами и распечатаны их компоненты. Обратите внимание, что эта команда использует традиционный совместимый с SSLeay формат для шифрования закрытым ключом: более новые приложения должны использовать более безопасный формат PKCS # 8 с помощью утилиты pkcs8.
КОМАНДНЫЕ ВАРИАНТЫ
-help
Распечатайте сообщение об использовании.
-inform DER|NET|PEM
Это определяет формат ввода. Опция DER использует закодированную форму ASN1 DER, совместимую с форматом PKCS # 1 RSAPrivateKey или SubjectPublicKeyInfo. Форма PEM является форматом по умолчанию: она состоит из формата DER base64, закодированного с дополнительными строками верхнего и нижнего колонтитула. На вход PKCS # 8 также принимаются закрытые ключи. Форма NET - это формат, описанный в разделе ПРИМЕЧАНИЯ.
-outform DER|NET|PEM
Это определяет формат вывода, параметры имеют то же значение, что и опция -inform.
-in filename
Это указывает имя файла ввода для чтения ключа или стандартный ввод, если эта опция не указана. Если ключ зашифрован, будет запрошена пароль.
-passin arg
источник пароля входного файла. Для получения дополнительной информации о формате arg см. Раздел «PASS PHRASE ARGUMENTS» в openssl.
-out filename
Это указывает имя выходного файла для записи ключа или стандартный вывод, если эта опция не указана. Если установлены какие-либо параметры шифрования, будет запрашиваться пароль. Имя выходного файла не должно совпадать с именем входного файла.
-passout password
источник пароля для выходного файла. Для получения дополнительной информации о формате arg см. Раздел «PASS PHRASE ARGUMENTS» в openssl.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
Эти параметры шифруют закрытый ключ указанным шифром перед его выводом. Требуется пароль. Если ни один из этих параметров не указан, ключ записывается в виде простого текста. Это означает, что использование утилиты rsa для считывания зашифрованного ключа без опции шифрования может использоваться для удаления парольной фразы из ключа или путем установки параметров шифрования, которые можно использовать для добавления или изменения парольной фразы. Эти параметры могут использоваться только с выходными файлами формата PEM.
-text
распечатывает различные компоненты открытого или закрытого ключа в виде простого текста в дополнение к закодированной версии.
-noout
эта опция предотвращает вывод закодированной версии ключа.
-modulus
эта опция печатает значение модуля ключа.
-check
эта опция проверяет согласованность закрытого ключа RSA.
-pubin
по умолчанию закрытый ключ считывается из входного файла: вместо этого читается открытый ключ.
-pubout
по умолчанию выводится закрытый ключ: с этой опцией вместо него будет выведен открытый ключ. Эта опция устанавливается автоматически, если ввод является открытым ключом.
-RSAPublicKey_in, -RSAPublicKey_out
например, -pubin и -pubout, за исключением того, что вместо них используется формат RSAPublicKey.
-engine id
указание механизма (по его уникальной строке идентификатора) заставит rsa попытаться получить функциональную ссылку на указанный механизм, тем самым инициализируя его при необходимости. Движок будет установлен по умолчанию для всех доступных алгоритмов.
НОТЫ
Формат закрытого ключа PEM использует строки верхнего и нижнего колонтитула:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
Формат открытого ключа PEM использует строки верхнего и нижнего колонтитула:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
Формат PEM RSAPublicKey использует строки верхнего и нижнего колонтитула:
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
Форма NET - это формат, совместимый со старыми серверами Netscape и файлами Microsoft IIS .key, для шифрования используется несоленый RC4. Это не очень безопасно и поэтому должно использоваться только при необходимости.
Некоторые новые версии IIS содержат дополнительные данные в экспортированных файлах .key. Чтобы использовать их вместе с утилитой, просмотрите файл в двоичном редакторе и найдите строку «закрытый ключ», а затем проследите до последовательности байтов 0x30, 0x82 (это последовательность ASN1). Скопируйте все данные с этого момента в другой файл и используйте их в качестве входных данных для утилиты rsa с опцией -inform NET.
ПРИМЕРЫ
Чтобы удалить фразу-пароль для закрытого ключа RSA:
openssl rsa -in key.pem -out keyout.pem
Чтобы зашифровать закрытый ключ с помощью тройного DES:
openssl rsa -in key.pem -des3 -out keyout.pem
Чтобы преобразовать закрытый ключ из формата PEM в DER:
openssl rsa -in key.pem -outform DER -out keyout.der
Чтобы распечатать компоненты закрытого ключа для стандартного вывода:
openssl rsa -in key.pem -text -noout
Чтобы просто вывести открытую часть закрытого ключа:
openssl rsa -in key.pem -pubout -out pubkey.pem
Выведите открытую часть закрытого ключа в формате RSAPublicKey:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
Чтобы извлечь ключ и сертификат из файла pem:
openssl pkey -in foo.pem -out foo.key
Еще один метод извлечения ключа ...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der
0. Условие : openssl
должно быть установлено. В Windows, если Git Bash
установлена, попробуйте это! Альтернативные двоичные файлы можно найти здесь.
1. Выписка .key
из .pem
:
openssl pkey -in cert.pem -out cert.key
2. Выписка .crt
из .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
.Crt хранит сертификат .. в формате pem. Поэтому .pem, хотя он может иметь и другие вещи, такие как csr (запрос на подпись сертификата), закрытый ключ, открытый ключ или другие сертификаты, когда он хранит только сертификат, - это то же самое, что и .crt.
Pem - это файл в кодировке Base 64 с заголовком и нижним колонтитулом между каждым разделом.
Чтобы извлечь конкретный раздел, скрипт perl, такой как приведенный ниже, полностью допустим, но не стесняйтесь использовать некоторые команды openssl.
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
где == 1 можно изменить на любой нужный вам раздел. Очевидно, что если вы точно знаете заголовок и нижний колонтитул, который вам требуется, и в файле есть только один из них (обычно, если вы сохраняете только сертификат и ключ), вы можете упростить его:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem