it-swarm.com.ru

Конвертировать .pem в .crt и .key

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

272
Lanbo

Я был в состоянии преобразовать Pem в CRT, используя это:

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

Преобразование с использованием 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 Convert 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
    
295
evergreen

Чтобы извлечь ключ и сертификат из файла pem:

Извлечь ключ

openssl pkey -in foo.pem -out foo.key

Еще один метод извлечения ключа ...

openssl rsa -in foo.pem -out foo.key

Извлеките все сертификаты, в том числе CA Chain

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
28
Highway of Life