Чи може хто-небудь сказати мені правильний спосіб / команду для вилучення / перетворення файлів сертифіката .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 Конвертувати DER
Перетворити DER в PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL конвертувати 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 конвертувати 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] [-інформація PEM | NET | DER] [-в імені файлу] [-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] [-вхідний ідентифікатор]
ОПИС
Команда rsa обробляє ключі RSA. Вони можуть бути перетворені між різними формами та роздрукованими їх компонентами. Зверніть увагу, що ця команда використовує традиційний для шифрування приватного ключа сумісний формат SSLeay: нові програми повинні використовувати більш захищений формат PKCS № 8 за допомогою утиліти pkcs8.
ВАРІАНТ КОМАНДИ
-help
Роздрукуйте повідомлення про використання.
-inform DER|NET|PEM
Це визначає формат введення. Параметр DER використовує кодовану форму ASER DER, сумісну з форматом RSAPrivateKey PKCS або 1 або SubjectPublicKeyInfo. Форма PEM - це формат за замовчуванням: він складається з формату DER base64, закодованого додатковими лініями заголовка та колонтитула. На вхід PKCS # 8 приватні ключі також приймаються. Форма NET - це формат, описаний у розділі ПРИМІТКИ.
-outform DER|NET|PEM
Тут вказується вихідний формат, параметри мають те саме значення, що і опція -inform.
-in filename
Це вказує ім'я вхідного файлу для читання ключа або стандартного вводу, якщо ця опція не вказана. Якщо ключ зашифрований, буде запропоновано фразу пропуску.
-passin arg
джерело пароля вхідного файлу. Більш детальну інформацію про формат аргументу див. У розділі «АРГУМЕНТИ ПАРАФАЗНОЇ ФРАЗИ» у openssl.
-out filename
Це визначає ім'я вихідного файлу для запису ключа або стандартного виводу, якщо ця опція не вказана. Якщо встановлені будь-які параметри шифрування, тоді буде запропоновано фразу пропуску. Ім’я вихідного файлу не повинно бути таким самим, як ім'я вхідного файлу.
-passout password
джерело пароля вихідного файлу. Більш детальну інформацію про формат аргументу див. У розділі «АРГУМЕНТИ ПАРАФАЗНОЇ ФРАЗИ» у 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 .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
Щоб витягти ключ і cert з файлу 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 (запит підпису сертифіката), приватний ключ, відкритий ключ або інші серти, коли він зберігає лише cert, - це те саме, що і .crt.
Pem - це базовий 64 закодований файл із заголовком та колонтитулом між кожним розділом.
Щоб витягнути певний розділ, сценарій perl, такий як наведений нижче, є абсолютно дійсним, але сміливо використовуйте деякі команди openssl.
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
де == 1 може бути змінено на будь-який розділ, який вам потрібен. Очевидно, що якщо ви точно знаєте потрібний вам колонтитул і колонтитул, і у файлі є лише один із них (як правило, у випадку, якщо ви зберігаєте лише cert і ключ там), ви можете спростити його:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem