Преобразовать .pem в .crt и .key

Может ли кто-нибудь сказать мне правильный путь/команду для извлечения/преобразования сертификата .crt и private key .key файлов из файла .pem? Я просто читал, что они взаимозаменяемы, но не так.

Ответ 1

Мне удалось преобразовать pem в crt, используя это:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt

Ответ 2

Преобразование с использованием 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 Преобразование 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
    
  • Теперь у вас есть данные в файле .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

  • NAME

    rsa - инструмент для обработки ключей RSA

  • СИНТАКСИС

    openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-aes128 ] [-aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-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, совместимую с форматом RSAPrivateKey PKCS # 1 или SubjectPublicKeyInfo. Форма PEM является форматом по умолчанию: она состоит из формата DER base64, закодированного с дополнительными строками заголовка и нижнего колонтитула. При вводе PKCS # 8 также принимаются закрытые ключи. Форма NET представляет собой формат, описанный в разделе NOTES.

    -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
    

    указание механизма (по его уникальной строке 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. Это использует несохраненный RC4 для его шифрования. Он не очень безопасен и поэтому должен использоваться только при необходимости.

    В более новой версии IIS есть дополнительные данные в экспортированных файлах .key. Чтобы использовать их с помощью утилиты, просмотрите файл с помощью двоичного редактора и найдите строку "private-key", затем вернитесь к последовательности байтов 0x30, 0x82 (это ASN1 SEQUENCE). Скопируйте все данные с этой точки в другой файл и используйте это как вход в утилиту 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
    

Ответ 3

Чтобы извлечь ключ и сертификат из файла 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

Извлеките первый текстовый сертификат как DER

openssl x509 -in foo.pem -outform DER -out first-cert.der

Ответ 4

.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