- Описание проблемы для конвертации .pem
- Apache с ssl – как конвертировать сертификаты cer в crt?
- Do i need to convert .cer to .crt for apache ssl certificates? if so, how?
- Key и crt в pfx
- Openssl для pem
- Opensslrsaварианты инструмента
- Opensslизменениеder
- Opensslизменениеp7b
- Opensslизменениеpfx
- Pfx в key и crt
- Конвертирование сертификатов при помощи openssl
- Конвертировать .pfx в .cer
- Лучшее решение
- Получаем сертификат
- Пример
- Примечания
- Формат pem
- Формат pkcs#7 или p7b
Описание проблемы для конвертации .pem
от.pemИзвлечь / конвертировать сертификат.crtИ закрытый ключ.keyКаков правильный метод или команда для файла? Я знаю, что они конвертируемые, но я не знаю, как это сделать.
Apache с ssl – как конвертировать сертификаты cer в crt?
расширения для шифрования сертификаты на самом деле не так стандартизированы, как вы ожидали. Windows по умолчанию обрабатывает двойной щелчок .crt файл как запрос на импорт сертификата в корневое хранилище сертификатов Windows, но обрабатывает запрос только для просмотра сертификата. Таким образом, они отличаются в этом смысле, по крайней мере, что Windows имеет некоторое присущее разное значение для того, что происходит, когда вы дважды щелкните каждый тип файла.
но способ то, что Windows обрабатывает их при двойном щелчке, – это единственное различие между ними. Оба расширения просто представляют, что он содержит открытый сертификат. Вы можете переименовать файл или использовать один вместо другого в любой системе или файле конфигурации, который я видел. И на платформах, отличных от Windows (и даже на Windows), люди не особенно заботятся о том, какое расширение они используют, и относятся к ним обоим взаимозаменяемо, поскольку нет никакой разницы между ними, пока содержимое файл правильный.
что делает вещи более запутанными, так это то, что есть два стандартных способа хранения данных сертификата в файле: один – “двоичная” кодировка X. 509, а другой – “текстовая” кодировка base64, которая обычно начинается с “-----BEGIN CERTIFICATE-----“. Эти кодируют одни и те же данные, но по-разному. Большинство систем принимают оба формата, но при необходимости вы можете конвертировать один в другой с помощью openssl или других инструментов. Но кодировка в файле сертификата действительно не зависит от того, расширение кто-то дал файл.
Если у вас есть конкретные вопросы о сложности использования определенного типа файла с конкретной программой, было бы лучше разместить отдельный вопрос, описывающий, какой файл у вас есть и что ожидает ваше приложение.
Do i need to convert .cer to .crt for apache ssl certificates? if so, how?
File extensions for cryptographic certificates aren’t really as standardized as you’d expect. Windows by default treats double-clicking a .crt file as a request to import the certificate into the Windows Root Certificate store, but treats a .cer file as a request just to view the certificate. So, they’re different in the sense that Windows has some inherent different meaning for what happens when you double click each type of file.
But the way that Windows handles them when you double-click them is about the only difference between the two. Both extensions just represent that it contains a public certificate. You can rename a certificate file to use one extension in place of the other in any system or configuration file that I’ve seen. And on non-Windows platforms (and even on Windows), people aren’t particularly careful about which extension they use, and treat them both interchangeably, as there’s no difference between them as long as the contents of the file are correct.
Making things more confusing is that there are two standard ways of storing certificate data in a file: One is a “binary” X.509 encoding, and the other is a “text” base64 encoding that usually starts with “-----BEGIN CERTIFICATE-----“. These encode the same data but in different ways. Most systems accept both formats, but, if you need to, you can convert one to the other via openssl or other tools. The encoding within a certificate file is really independent of which extension somebody gave the file.
Key и crt в pfx
Сшивание двух файлов ключей — открытого и закрытого — может потребоваться для сервисов на базе Windows, которые привыкли видеть сертификаты в формате .pfx. Также в некоторых случаях хранить пары ключей удобнее именно в формате pfx.
Примечание: если вы генерировали csr-запрос на стороне сервера Windows, то вам придется его завершить, подсунув файл .crt, который вам позже пришлет ваш ЦС. В итоге экспортировать сертификат из оснастки MMC вы сможете именно в формате .pfx.
Собрать crt и key в pfx можно командой:
Как только нажмете Enter, нужно будет ввести пароль от файла закрытого ключа (если этот пароль есть), а также пароль для экспорта в pfx. После этого смело используйте файл на серверах Windows, но не забудьте при импорте отметить ключ экспортируемым (иначе экспортировать ключ потом не получится).
Openssl для pem
openssl x509 -outform der -in certificate.pem -out certificate.der
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Opensslrsaварианты инструмента
Название:
инструмент обработки ключей 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Шифрование закрытым ключом в совместимом формате: новые приложения должны использоватьpkcs8Утилиты более безопасныPKCS#8Формат.Опции команды:
-help: Распечатать информацию об использовании.-inform DER|NET|PEM: Укажите формат ввода. Опция DER использует формат кодировки ASN1 DER, совместимый с форматом PKCS # 1 RSAPrivateKey или SubjectPublicKeyInfo. Формат PEM является форматом по умолчанию: он кодируется в формате base64 в формате DER с дополнительными строками верхнего и нижнего колонтитула. Закрытый ключ в формате PKCS # 8 также принимается. Формат NET – это формат, описанный в разделе ПРИМЕЧАНИЯ.-outform DER|NET|PEM: Указывает формат вывода. Параметры имеют то же значение, что и опция -inform.-in filename: Если эта опция не указана, указывает имя файла ввода для чтения ключей из или из стандартного ввода. Если ключ зашифрован, вам будет предложено ввести пароль.-passin arg: Введите источник пароля для файла. Для получения дополнительной информации о формате arg см. Раздел «ПАРОЛЬ ФРАЗОВЫЕ АРГУМЕНТЫ» в openssl.-out filename: Если эта опция не указана, указывает имя выходного файла, в который записываются или выводятся ключи. Если установлены какие-либо параметры шифрования, вам будет предложено ввести пароль. Имя выходного файла не может совпадать с именем входного файла.-passout password: Источник пароля для выходного файла. Для получения дополнительной информации о формате arg см. Раздел «ПАРОЛЬ ФРАЗОВЫЕ АРГУМЕНТЫ» в openssl.-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
Эти параметры перед выводом шифруют закрытый ключ с указанным паролем. Там будут подсказки для того же трафика. Если эти параметры не указаны, ключ записывается в виде простого текста. Эти параметры доступны только для выходных файлов в формате PEM.-text: В дополнение к закодированной версии, различные компоненты открытого или закрытого ключа печатаются в виде простого текста.-noout: Эта опция предотвращает вывод кодированной версии ключа.-modulus: Эта опция печатает значение по модулю ключа.-check: Эта опция проверит непротиворечивость закрытого ключа RSA.-pubin: По умолчанию читать закрытый ключ из входного файла: используйте эту опцию, чтобы прочитать открытый ключ.-pubout: Закрытый ключ выводится по умолчанию: использование этой опции выведет открытый ключ. Если ввод является открытым ключом, эта опция устанавливается автоматически.-RSAPublicKey_in, -RSAPublicKey_out: Как -pubin и -pubout, за исключением случаев использования формата RSAPublicKey.-engine id: Указание механизма (с помощью которого получается уникальная строка идентификатора) заставит rsa попытаться получить ссылку на конкретную функцию механизма, тем самым инициализируя ее при необходимости. Движок будет установлен по умолчанию для всех доступных алгоритмов.
Opensslизменениеder
openssl x509 -inform der -in certificate.cer -out certificate.pem
Opensslизменениеp7b
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
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
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Pfx в key и crt
Воспользуемся всем знакомой утилитой openssl, чтобы вытащить открытую часть pfx-сертификата1:
Нужно будет ввести пароль, который вы указывали при экспорте .pfx-сертификата. Теперь попробуем извлечь закрытую часть сертификата, поместив её в отдельный запароленный файл:
После выполнения команды вам придется ввести не только пароль, который использовался для экспорта .pfx-сертификата, но и новый пароль, необходимый для защиты .key-файла. Далее вы вполне можете использовать все полученные ранее файлы сертификата для настройки какого-либо сервиса, использующего SSL. Например Apache (см. секцию ниже в качестве примера).
Закрытый ключ сертификата с парольной защитой не всегда удобно использовать на реальном окружении. Например тот же Apache будет спрашивать пароль при каждом рестарте сервиса, что будет требовать человеческого участия. Обойти проблему можно, сняв пароль с закрытого ключа:
Будьте крайне осторожны в этом случае, чтобы не допустить компрометацию закрытого ключа. Установите на файл соответствующие права, чтобы никто кроме вас не имел к нему доступ:
Ну а теперь рассмотрим обратную процедуру.
Конвертирование сертификатов при помощи openssl
Как только возникает необходимость выполнить конвертирование одного формата сертификата в другой, каждый раз возникает вопрос: “Как это сделать?”. Наиболее удобно для этого использовать OpenSSL (
openssl.org
), этот сайт содержит исходные коды, если нет желания выполнять компилирование исходных кодов, то можно взять скомпилированный вариант OpenSSL, его можно скачать по ссылке:
https://slproweb.com/products/Win32OpenSSL.html
. Необходимость выполнять конвертирование возникает, если имеющийся формат сертификата не подходит для ПО или оборудования.
Итак, если необходимо выполнить конвертирование одного формата сертификата в другой, то надо скачать и установить OpenSSL на локальном компьютере. Далее, рекомендуется скопировать с папку с OpenSSL имеющиеся файлы сертификата, для которого необходимо выполнить конвертирование, открыть командную строку и перейти в папку с установленным OpenSSL.
Рекомендуется запускать командную строку с от имени администратора (Run As Administrator), это позволит избежать возможных ошибок, если на машине включен UAC.
Для выполнения конвертирования необходимо выполнить одну (или две) команду из списка ниже, в зависимости от исходного формата сертификата и целевого.
Конвертирование x509 в PEM
openssl x509 -in certificate.cer -outform PEM -out certificate.pem Конвертирование PEM в DER
openssl x509 -outform der -in certificate.pem -out certificate.der Конвертирование DER в PEM
openssl x509 -inform der -in certificate.der -out certificate.pem Конвертирование PEM в P7B
openssl crl2pkcs7 -nocrl -certfile certificate.pem -out certificate.p7b -certfile CACert.cer Конвертирование PKCS7 в PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem Конвертирование pfx в PEM
openssl pkcs12 -in certificate.pfx -out certificate.pem Конвертирование PFX в PKCS#8
Для этого требуется выполнение двух команд
Step 1:Конвертирование PFX в PEM
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out certificate.pem Step 2:Конвертирование PEM в PKCS8
openSSL pkcs8 -in certificate.pem -topk8 -nocrypt -out certificate.pk8 Конвертирование P7B в PFX
Для этого требуется выполнение двух команд
1. Конвертирование P7B в CER
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer2. Конвертирование CER и закрытого ключа в PFX
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile cacert.cer cacert.cer – это файл сертификата выдающего центра сертификации (Intermediate CAs)
Конвертировать .pfx в .cer
Если вы работаете в PowerShell, вы можете использовать что-то вроде следующего, учитывая pfx- файл InputBundle.pfx , для создания DER-кодированного (двоичного) файла сертификата OutputCert.der :
Get-PfxCertificate -FilePath InputBundle.pfx |
Export-Certificate -FilePath OutputCert.der -Type CERT
Newline добавлен для ясности, но вы, конечно, можете иметь все это в одной строке.
Если вам нужен сертификат в формате PEM в кодировке ASCII / Base64, вы можете предпринять дополнительные шаги, как описано в другом месте, например, здесь: /superuser/351548/windows-integrated-utility-to-convert -der к PEM
Если вам нужно экспортировать в формат, отличный от кодированного DER, вы можете изменить -Typeпараметр Export-Certificate, чтобы использовать типы, поддерживаемые .NET, как показано в help Export-Certificate -Detailed:
-Type <CertType>
Specifies the type of output file for the certificate export as follows.
-- SST: A Microsoft serialized certificate store (.sst) file format which can contain one or more certificates. This is the default value for multiple certificates.
-- CERT: A .cer file format which contains a single DER-encoded certificate. This is the default value for one certificate.
-- P7B: A PKCS#7 file format which can contain one or more certificates.
Лучшее решение
Вы можете конвертировать pem в crt используя:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
Получаем сертификат
Если у вас все ещё нет сертификата от публичного ЦС,
тогда мы идем к вам
то самое время его получить. Обычно для этого сначала нужно сделать CSR-запрос. Следующий шаг — отправить его в ЦС и пройти проверку домена/организации (вам отправят письмо с кодом подтверждения на какой-либо админский адрес, либо позвонят на корпоративный номер телефона в зависимости от типа проверки).
Как только все формальности пройдены, на почту вы получите архив с нужным вам сертификатом в формате .crt (и всей цепочкой промежуточных на всякий случай).
Пример
- Чтобы удалить фразу-пароль для закрытого ключа 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 использует следующие строки верхнего и нижнего колонтитула:
-----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В файле есть другие дополнительные данные. Чтобы использовать эти утилиты, используйте бинарный редактор для просмотра файлов и поиска строк”private-key”А затем вернемся к последовательности байтов0x30,0x82(ЭтоASN1 SEQUENCE).
Формат pem
Самый популярный формат используемый Центрами Сертификации для выписки SSL -сертификатов. В этом формате может выдаваться так же промежуточный или главный CA. Этот тип распознаётся после расширений файла: .pem, .crt, .cer или .key (в файлах содержатся линии BEGIN и END сертификата, ключа и т.д.). Он закодирован в формате Base64.
PEM компатибильный с серверами Apache и подобными. Во время инсталяции большинство серверов требуют отдельные файлы – сертификат(ы) не могут быть соединены с приватным ключём и т.д.
Формат pkcs#7 или p7b
Эти файлы обычно кодируются в формате Base64 и имеют окончание .p7b или .p7c. Файлы P7B содержат линии “—–BEGIN PKCS7—–” и “—–END PKCS7—–“. В этом формате нету приватных ключей.
PKCS#7 и P7B используются для инсталяции м.п. на серверах Microsoft Windows и Java Tomcat.
