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

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

Я смог преобразовать pem в crt, используя это:

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

Преобразование с использованием 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 в командной строке, вам сначала нужно создать общеansible и закрытый ключ, вы должны защитить этот файл паролем с помощью аргумента -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 в OpenSSL

  • ИМЯ

    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. Это использует unsalted 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 

Чтобы извлечь ключ и сертификат из файла 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 
  • Должны ли ключи JSON быть уникальными?
  • Карта Google подписала ошибки api в Android
  • Определение составного ключа с автоматическим добавлением в MySQL
  • Где я могу найти список кодов виртуальных клавиш Mac?
  • Могу ли я сортировать NSDictionary на основе ключа в Objective-C?
  • Давайте будем гением компьютера.