Как импортировать существующий сертификат x509 и закрытый ключ в хранилище ключей java для использования в ssl?

View

Even though PEM encoded certificates are ASCII they are not human readable. Here are some commands that will let you output the contents of a certificate in human readable form.

View PEM encoded certificate

Use the command that has the extension of your certificate replacing cert.xxx with the name of your certificate

If you get the following error it means that you are trying to view a DER encoded certifciate and need to use the commands in the “View DER encoded certificate” section below:

View DER encoded certificate

If you get the following error it means that you are trying to view a PEM encoded certificate with a command meant for DER encoded certs. Use a command in the “View PEM encoded certificate” section above:

Конвертировать закрытый ключ в формат PKCS # 1

Приведенные выше примеры выводят закрытый ключ в OpenSSL по умолчанию. PKCS # 8 формат. Если вы знаете, что вам нужно PKCS # 1 вместо этого вы можете передать вывод утилиты OpenSSL PKCS # 12 ее утилите RSA или EC в зависимости от типа ключа. Обе команды ниже выведут файл ключа в формате PKCS # 1:

ECDSA

openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl ec -out OUTFILE.key

Примечание: Вы можете увидеть разницу между файлами закрытого ключа PKCS # 8 и PKCS # 1, посмотрев на первую строку текста. В файлах PKCS # 1 будет указан алгоритм:

Файлы PKCS # 8 не показывают алгоритм, а также могут быть зашифрованы:or

Спасибо, что выбрали SSL.com! Если у вас возникнут вопросы, свяжитесь с нами по электронной почте по адресу [email protected], вызов 1-877-SSL-SECUREили просто нажмите на ссылку чата в правом нижнем углу этой страницы.

Current certificate best practices

  • Set lifetime lower than 398 days
  • Use SHA-256 instead of SHA-1
  • Use 2048 bit keys for now (4096 is still too resource intensive)

Certificate chain order

The correct order of a certificate bundle a.k.a certificate chain e.g:

is:

Web Server:

HTTP Client:

The following certificate chain issues can occur:

  • : When a site does not provide the necessary intermediate certificates, a trust path cannot be established. Generally speaking, one cannot distinguish that case from a certificate signed by a custom CA. However, some server certificates include the information on which intermediate certificates are required, and also where to obtain them. If the intermediate certificates are found, then it’s very likely that a trust path will be established. In such cases you should reconfigure the server to add the missing certificates.
  • : Sites often include more certificates in the handshake than necessary. Of those, most include one extra certificate, and that is the actual trusted root certificate (which browsers already have in their storage). This last certificate is not needed for the validation process. Having an additional certificate in the chain wastes bandwidth and decreases overal performance slightly. A small number of sites will include a very large number of certificates as a result of misconfiguration. Such sites will typically suffer significant performance issues and need to be reconfigured.
  • : According to the standard, certificates must be presented in the order in which they are needed. The main, server, certificate must come first, followed by the certificate that signed it, followed by the next certificate in the chain, and so on. A small number of sites does not get this order right. Most SSL clients will deal with this problem silently, but there is a small number of platforms that will give up.

3) Используйте сертификат CA для подписи и создания файла crt

4. Краткое изложение практики

  • Единственное различие между сертификатом CA и сертификатом сервера состоит в том, когда он окончательно подписан, независимо от того, подписываете ли вы его самостоятельно или разрешаете кому-либо подписывать его для вас.
  • В реальном приложении необходимы файлы закрытых ключей (ключей) и сертификатов (crt). Файл закрытого ключа очень важен и не должен быть обнародован. Файл сертификата может распространяться по желанию.
  • Если файл сертификата crt добавлен в доверенный корневой орган, сертификат и все подписанные сертификаты будут доверенными. Затем вы можете создать сертификат CA в организации, добавить сертификат CA в список доверенных, а затем все остальные сертификаты в организации будут подписаны этим сертификатом, и вам нужно будет доверять ему только один раз.

Способ использования ssl в nginx заключается в добавлении следующего выражения в файл конфигурации:

5. Для настроек IIS

В IIS необходим файл PFX, который должен содержать ключ и crt. Метод генерации заключается в следующем:

При выполнении вышеуказанной команды вам будет предложено ввести пароль для экспорта. Этот пароль требуется при импорте файла pfx.

Выберите «Импортировать сертификат» в IIS, выберите файл pfx в качестве файла, введите пароль при экспорте и выберите «Персональный» в качестве места импорта.

Если вы хотите изменить понятное имя сертификата, измените его в управлении сертификатами (необходимо открыть диспетчер сертификатов на уровне компьютера из mmc).

6. Решите проблему, о которой Chrome сообщает об отсутствии_субъекта AltName

Chrome проверит, объявлено ли текущее доменное имя в сертификате, что задается полем subjectAltName. Вышеупомянутый шаг генерации не устанавливает это поле по умолчанию.

Решение заключается в следующем:

Создайте новый файл и назовите его v3.ext (назовите свой собственный), и отредактируйте содержимое следующим образом:

Имя домена должно совпадать с именем домена, фактически связанным с вашим сертификатом. Если есть несколько доменных имен, напишите несколько в соответствии с примером.

При подписании добавьте дополнительный параметр:-extfile v3.ext

Инструкции

Шаг 1. Определение имени издателя пакета

чтобы сделать сертификат подписи, который вы создадите, использовать с пакетом приложения, который необходимо подписать, имя субъекта сертификата подписи должно соответствовать атрибуту Publisher элемента Identity в AppxManifest.xml для этого приложения. Например, предположим, что AppxManifest.xml содержит:

Для параметра publisherName , указанного с помощью служебной программы MakeCert на следующем шаге, используйте «CN = Contoso Software, O = Contoso Corporation, C = US».

Примечание

Эта строка параметра указывается в кавычках и является учетом регистра и пробела.

строка атрибута Publisher , определенная для элемента Identity в AppxManifest.xml, должна совпадать со строкой, указанной с помощью параметра MakeCert /n для имени субъекта сертификата. Скопируйте и вставьте строку, где это возможно.

Шаг 2. создание закрытого ключа с помощью MakeCert.exe

Используйте служебную программу MakeCert для создания самозаверяющего тестового сертификата и закрытого ключа:

Эта команда предложит указать пароль для PVK-файла. Рекомендуется выбрать надежный пароль и защитить закрытый ключ в безопасном месте.

Рекомендуется использовать предлагаемые параметры из предыдущего примера по следующим причинам.

/r

Создает самозаверяющий корневой сертификат. Это упрощает управление тестовым сертификатом.

/h 0

Помечает базовое ограничение для сертификата как конечную сущность. Это предотвращает использование сертификата в качестве центра сертификации (ЦС), который может выдавать другие сертификаты.

/еку

Задает значения расширенного использования ключа (EKU) для сертификата.

Примечание

Не ставьте пробел между двумя значениями, разделенными запятыми.

  • 1.3.6.1.5.5.7.3.3 указывает, что сертификат действителен для подписывания кода. Всегда указывайте это значение, чтобы ограничить предполагаемое использование сертификата.
  • 1.3.6.1.4.1.311.10.3.13 указывает, что сертификат учитывает время существования подписи. Как правило, если подпись имеет отметку времени, при условии, что сертификат был действителен в момент времени, подпись остается действительной, даже если срок действия сертификата истек. Это расширенное EKU заставляет срок действия подписи истечь независимо от того, имеет ли подпись время отметки.

/e

Задает дату окончания срока действия сертификата. Укажите значение параметра expirationDate в формате мм/дд/гггг. Рекомендуется выбирать дату истечения срока действия, если это необходимо для целей тестирования, как правило, меньше года. Эта дата окончания срока действия в сочетании с ключом времени существования подписывания может помочь ограничить окно, в котором сертификат может быть скомпрометирован и недоступен.

Дополнительные сведения о других параметрах см. в разделе MakeCert.

шаг 3. создание файла личных данных Exchange (. pfx) с помощью Pvk2Pfx.exe

Используйте служебную программу Pvk2Pfx для преобразования файлов. PVK и. cer, созданных средством MakeCert , в PFX-файл, который можно использовать с средством SignTool для подписания пакета приложения:

Файлы MyKey. PVK и MyKey. cer являются теми же файлами, которые MakeCert.exe созданы на предыдущем шаге. С помощью необязательного параметра/по можно указать другой пароль для результирующего PFX-файла; в противном случае PFX-файл имеет тот же пароль, что и MyKey. PVK.

Дополнительные сведения о других параметрах см. в разделе Pvk2Pfx.

PEM

PEM (первоначально «Privacy Eулучшенный Mail ») — наиболее распространенный формат для X.509 сертификаты, CSRи криптографические ключи. Файл PEM представляет собой текстовый файл, содержащий один или несколько элементов в кодировке Base64 ASCII, каждый из которых содержит простые и нижние колонтитулы (например, и ). Один файл PEM может содержать сертификат конечного объекта, закрытый ключ или несколько сертификатов, образующих полную цепочку доверия. Большинство файлов сертификатов, загружаемых с SSL.com, будут в формате PEM.

Расширения имени файла PEM

PEM файлы обычно видны с расширениями , , и (для закрытых ключей), но вы также можете видеть их с разными расширениями. Например, файл пакета SSL.com CA, доступный в таблице загрузок в порядке сертификата, имеет расширение .

Общие преобразования PEM

В приведенных ниже командах OpenSSL замените имена файлов ВСЕМИ ЗАГЛАВНЫМИ буквами фактическими путями и именами файлов, с которыми вы работаете.

Преобразовать сертификат PEM с цепочкой доверия в PKCS # 7

PKCS # 7 (также известный как P7B) — это контейнерный формат для цифровых сертификатов, который чаще всего встречается в контексте серверов Windows и Java и обычно имеет расширение , Файлы PKCS # 7 не используются для хранения закрытых ключей. В приведенном ниже примере представляет файл со связанными промежуточными и корневыми сертификатами (такими как файл, скачанный с SSL.com).

openssl crl2pkcs7 -nocrl -certfile CERTIFICATE.pem -certfile MORE.pem -out CERTIFICATE.p7b

Преобразовать сертификат PEM с цепочкой доверия и секретным ключом в PKCS # 12

PKCS # 12 (также известный как PKCS12 или PFX) является распространенным двоичным форматом для хранения цепочки сертификатов и закрытого ключа в одном зашифрованном файле и обычно имеет расширения имени файла. or , В приведенном ниже примере добавляет файл со связанными промежуточными и корневыми сертификатами (такими как файл, загруженный с SSL.com), и добавляет закрытый ключ для (сертификат конечного объекта). Посмотри пожалуйста это как для более подробного объяснения показанной команды.

openssl pkcs12 -export -out CERTIFICATE.pfx -inkey PRIVATEKEY.key -in CERTIFICATE.crt -certfile MORE.crt

После выполнения указанной выше команды вам будет предложено создать пароль для защиты файла PKCS # 12. Запомните этот пароль. Он понадобится вам для доступа к любым сертификатам и ключам, хранящимся в файле.

Remarks

После создания PFX-файла можно использовать файл с помощью средства SignTool для подписания пакета приложения. Дополнительные сведения см. в разделе как подписать пакет приложения с помощью средства SignTool. Но сертификат по-прежнему не является доверенным для локального компьютера для развертывания пакетов приложений, пока он не будет установлен в хранилище доверенных сертификатов на локальном компьютере. Вы можете использовать Certutil.exe, который поставляется вместе с Windows.

Установка сертификатов с помощью WindowsCertutil.exe

  1. Запустите Cmd.exe от имени администратора.

  2. Выполните следующую команду:

Рекомендуется удалить сертификаты, если они больше не используются. В той же командной строке администратора выполните следующую команду:

CertID — серийный номер сертификата. Выполните следующую команду, чтобы определить серийный номер сертификата:

Использование Microsoft Visual Studio в .NET

С помощью инструментов Microsoft Visual Studio 2005 (в каталоге Common7\Tools\Bin) можно создать сертификат для Google Workspace. Чтобы сформировать пару ключей и сертификат в среде .NET, выполните следующие шаги:

1.
2.

По умолчанию в этих командах используется алгоритм RSA. На шаге 1 с помощью инструмента Certificate Creation Tool (makecert.exe) создаются самозаверяющий сертификат X.509 (testcert.cer) и соответствующий закрытый ключ.

На шаге 2 с помощью инструмента pvk2pfx Tool (pvk2pfx.exe) на основе CER- и PVK-файлов создается PFX-файл, содержащий как открытый, так и закрытый ключи.

Файл testcert.cer, созданный на шаге 1, можно загрузить в Google Workspace через панель управления. С помощью файла testcert.pfx, созданного на шаге 2, можно создать экземпляр сертификата X509Certificate2 (.NET 2.0+) для подписи ответов SAML.

Сфера применения

  • SQL Server 2014
  • SQL Server 2014
  • SQL Server 2014 Enterprise
  • SQL Server 2014 Enterprise
  • SQL Server 2014 г.
  • SQL Server 2014 г.
  • SQL Server 2014 standard
  • SQL Server 2014 standard
  • SQL Server 2014 Express
  • SQL Server 2014 Express
  • SQL Server 2012
  • SQL Server 2012 Enterprise
  • SQL Server 2012 г.
  • SQL Server 2012 standard
  • SQL Server 2012 Express
  • SQL Server 2008 R2 Datacenter
  • SQL Server 2008 R2 Developer
  • SQL Server R2 2008 Enterprise
  • SQL Server 2008 R2 Web
  • SQL Server 2008 R2 Standard
  • SQL Server 2008 R2 Express
  • SQL Server 2008
  • SQL Server 2008 Enterprise
  • SQL Server 2008 workgroup
  • SQL Server 2008 г.
  • SQL Server 2008 Express
  • Microsoft SQL Server 2005 выпуск Enterprise
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 выпуск Standard
  • Microsoft SQL Server 2005, экспресс-выпуск

Генерирование запроса на подпись сертификата

Генерирование закрытого ключа и запроса

Этот метод позволяет вам подписать сертификат в ЦС и защитить веб-сервер Apache или Nginx с помощью HTTPS. Сгенерированный запрос на подпись можно отправить в ЦС, чтобы получить подписанный сертификат. Если ЦС поддерживает SHA-2, добавьте опцию -sha256.

Следующая команда создаст 2048-битный закрытый ключ (domain.key) и CSR (domain.csr):

Заполните поля в запросе на подпись.

Опция -newkey rsa:2048 создаст 2048-битный RSA-ключ. Опция –nodes отключает пароль для закрытого ключа.

Генерирование запроса для существующего закрытого ключа

Если у вас уже есть закрытый ключ, но нет сертификата, вы можете сгенерировать запрос для этого ключа.

Следующая команда создаст запрос сертификата (domain.csr) для существующего ключа (domain.key):

Ответьте на запросы программы, чтобы продолжить. Опция –new указывает, что запрос нужно сгенерировать.

Генерирование запроса для существующего сертификата и ключа

Этот метод позволяет обновить существующий сертификат, если оригинальный запрос на подпись сертификата был утерян.

Следующая команда создаст запрос (domain.csr) на основе существующего сертификата (domain.crt) и закрытого ключа (domain.key):

Опция -x509toreq создаст сертификат X509.

Генерирование SSL-сертификата

Если вы хотите защитить свой сервис, но не хотите подписывать его в ЦС, вы можете создать и подписать сертификат самостоятельно.

Такие сертификаты называются самоподписанными.

По сути, самоподписанный сертификат – это сертификат, подписанный своим собственным закрытым ключом. Такие сертификаты тоже шифруют соединения, однако они не подтверждают подлинности сайта, потому пользователи, которые открывают сайт, увидят предупреждение.

Если вам ненужно подтверждать подлинность сайта, вы можете спокойно использовать самоподписанные сертификаты.

Генерирование самоподписанного сертификата

Этот метод позволяет защитить веб-сервер Apache или Nginx с помощью HTTPS.

Следующая команда создаст 2048-битный закрытый ключ (domain.key) и CSR (domain.csr):

Заполните запрос на подпись.

Опция -x509 создаёт самоподписанный сертификат. Опция -days 365 задаёт срок действия сертификата в днях.

Создание сертификата для существующего закрытого ключа

Если у вас уже есть закрытый ключ, но нет сертификата, вы можете сгенерировать сертификат для этого ключа.

Следующая команда создаст сертификат (domain.csr) для существующего ключа (domain.key):

Ответьте на запросы программы, чтобы продолжить.

  • Опция -x509 создаёт самоподписанный сертификат. Опция -days 365 задаёт срок действия сертификата в днях.
  • Опция –new запускает запрос данных для создания CSR.

Генерирование запроса для существующего сертификата и ключа

Этот метод позволяет создать сертификат, если у вас уже есть закрытый ключ и запрос на подпись сертификата.

Следующая команда создаст сертификат (domain.crt) на основе существующего запроса (domain.csr) и закрытого ключа (domain.key):

Опция -days 365 задаёт срок действия сертификата в днях.

Массовый перенос ключей и сертификатов CryptoPro с компьютера на компьютер

В интернете достаточно легко находится способ переноса контейнеров закрытых ключей КриптоПро через копирование нужной ветки реестра, где это все хранится. Я воспользуюсь именно этим способом. А вот с массовым переносом самих сертификатов у меня возникли затруднения и я не сразу нашел рабочий способ. Расскажу о нем тоже. Для дальнейшей работы нам надо узнать SID текущего пользователя, у которого мы будем копировать или переносить сертификаты с ключами. Для этого в командной строке выполните команду:

В данном случай user — имя учетной записи, для которой узнаем SID. Далее скопируем контейнеры закрытых ключей в файл. Для этого на компьютере открываем редактор реестра (regedit.exe) и переходим в ветку:

где S-1-5-21-4126888996-1677807805-1843639151-1000 — SID пользователя, у которого копируем сертификаты. Выбираем папку Keys и экспортируем ее. Этот путь актуален для 64-х битных систем — Windows 7, 8, 10. В 32-х битных путь может быть немного другой. Я специально не проверял, но поиском по реестру вы при желании найдете его.  

Сохраняем ветку реестра в файл. В ней хранятся закрытые ключи. Теперь нам нужно скопировать сразу все сертификаты. В Windows 7, 8 и 10 они живут в директории — C:\Users\user\AppData\Roaming\Microsoft\SystemCertificates\My. Сохраняйте эту директорию. Для переноса ключей и сертификатов нам надо скопировать на другой компьютер сохраненную ветку реестра и директорию с сертификатами My.

После того, как перенесли файлы со старого компьютера на новый, открываем файл с веткой реестра в текстовом редакторе и меняем там SID пользователя со старого компьютера на SID пользователя нового компьютера. Можно прям в блокноте это сделать поиском с заменой.

После этого запускаем .reg файл и вносим данные из файла в реестр. Теперь скопируйте папку My с сертификатами в то же место в профиле нового пользователя. На этом перенос сертификатов и контейнеров закрытых ключей КриптоПро завершен. Можно проверять работу. Я не раз пользовался этим методом, на текущий момент он 100% рабочий. Написал статью, чтобы помочь остальным, так как сам не видел в интернете подробной и понятной с первого раза статьи на эту тему. Надеюсь, моя таковой получилась.

Private Keys

This section covers OpenSSL commands that are specific to creating and verifying private keys.

Create a Private Key

Use this command to create a password-protected, 2048-bit private key (domain.key):

Enter a password when prompted to complete the process.

Verify a Private Key

Use this command to check that a private key (domain.key) is a valid key:

If your private key is encrypted, you will be prompted for its pass phrase. Upon success, the unencrypted key will be output on the terminal.

Verify a Private Key Matches a Certificate and CSR

Use these commands to verify if a private key (domain.key) matches a certificate (domain.crt) and CSR (domain.csr):

If the output of each command is identical there is an extremely high probability that the private key, certificate, and CSR are related.

Encrypt a Private Key

This takes an unencrypted private key (unencrypted.key) and outputs an encrypted version of it (encrypted.key):

Enter your desired pass phrase, to encrypt the private key with.

Decrypt a Private Key

This takes an encrypted private key (encrypted.key) and outputs a decrypted version of it (decrypted.key):

Enter the pass phrase for the encrypted key when prompted.

openssl s_client -connect example.com:443

Import a certificate

If you face any issue (Ex: -bash: /dev/null : No such file or directory) try it in the below way

  1. Import the certificate
  1. Check if the certificate is present or not
  1. Copy the certificate part to a .crt file
  1. verify it
  1. Change the password of a pfx file

Export you current certificate to a passwordless pem type

Convert the passwordless pem to a new pfx file with password:

or

  • The key file is just a text file with your private key in it.

  • If you have a root CA and intermediate certs, then include them as well using multiple -in params

Java keytool

TrustStore vs keyStore:

Main difference between trustStore vs keyStore is that trustStore (as name suggest) is used to store certificates from trusted Certificate authorities(CA) which are used to verify certificate presented by Server in SSL Connection while keyStore is used to store private key and own identity certificate which program should present to other parties (Server or client) to verify its identity. That was one liner difference between trustStore vs keyStore in Java but no doubt these two terms are quite a confusion not just for anyone who is the first time doing SSL connection in Java but also many intermediate and senior level programmer. One reason of this could be SSL setup being a one-time job and not many programmers get opportunity to do that. In this Java article, we will explore both keystore and trust stores and understand key differences between them. By the way, you can use a keytool command to view certificates from truststore and keystore. keytool command comes with Java installation and its available in the bin directory of JAVA_HOME.

Starting the application server with the keystores

ОБЗОР ФОРМАТОВ SSL CЕРТИФИКАТОВ

ФОРМАТ СЕРТИФИКАТА PEM

PEM – наиболее популярный формат среди сертификационных центров. PEM сертификаты могут иметь расширение .pem, .crt, .cer, и .key (файл приватного ключа). Она представляют собой ASCII файлы, закодированные по схеме Base64. Когда вы открываете файл pem формата в текстовом редакторе, вы можете увидеть, что текст кода в нем начинается с тега «—— BEGIN CERTIFICATE ——» и заканчивая тегом «—— END CERTIFICATE ——«. Apache и другие подобные серверы используют сертификаты в PEM формате

Обратите внимание, что в одном файле может содержатся несколько SSL сертификатов и даже приватный ключ, один под другим. В таком случае каждый сертификат отделен от остальных ранее указанными тегами BEGIN и END

Как правило, для установки SSL сертификата на Apache, сертификаты и приватный ключ должны быть в разных файлах.

ФОРМАТ СЕРТИФИКАТА DER

DER формат – это бинарный тип сертификата вместо формата PEM. В PEM формате чаще всего используется расширение файла .cer, но иногда можно встретить и расширение файла .der. Поэтому чтобы отличить SSL сертификат в формате PEM от формата DER, следует открыть его в текстовом редакторе и найти теги начала и окончания сертификата (BEGIN/END). DER SSL сертификаты, как правило, используются на платформах Java.

PKCS # 7 / P7B СЕРТИФИКАТ

SSL сертификаты в формате PKCS # 7 или P7B — это файлы, которые хранятся в формате Base64 ASCII и имеют расширение файла .p7b или .p7c. P7B сертификаты содержат теги начала сертификата «—— BEGIN PKCS7 ——» и его конца «—— END PKCS7 ——«. Файлы в формате P7B включают в себя только ваш SSL сертификат и промежуточные SSL сертификаты. Приватный ключ при этом идет отдельным файлом. SSL сертификаты в формате PKCS # 7 / P7B поддерживают следующие платформы: Microsoft Windows и Java Tomcat.

PFX СЕРТИФИКАТ (ФОРМАТ PKCS # 12)

Формат SSL сертификата PKCS # 12 или, как его еще называют, PFX сертификат — бинарный формат, при использовании которого в одном зашифрованном файле хранится не только ваш личный сертификат сервера и промежуточные сертификаты центра сертификации, но и ваш закрытый ключ. PFX файлы, как правило, имеют расширение .pfx или .p12. Обычно, файлы формата PFX используются на Windows серверах для импорта и экспорта файлов сертификатов и вашего приватного ключа.

Форматы сертификатов

До этого в руководстве рассматривались только сертификаты X.509 с кодированием ASCII PEM. Однако существует множество других форматов. Некоторые форматы позволяют объединить компоненты – ключ, запрос, сертификат – в один файл.

Чтобы конвертировать PEM в DER, используйте такую команду:

Формат DER обычно использует Java.

Конвертация PEM в PKCS7

Чтобы добавить сертификаты PEM (domain.crt и ca-chain.crt) в файл PKCS7 (domain.p7b), введите:

Файлы PKCS7 (также известные как P7B) часто используются в Java Keystores и Microsoft IIS (Windows).

Конвертация to PKCS7 в PEM

Чтобы конвертировать PKCS7 в PEM, введите:

Обратите внимание: файл PKCS7 содержит много компонентов, а именно сертификат и промежуточный сертификат ЦС

Конвертация PEM в PKCS12

Следующая команда позволяет объединить закрытый ключ и сертификат в файл PKCS12.

Программа запросит пароль. Файл PKCS12 позволяет объединить несколько сертификатов в один PEM-файл (domain.crt).

Файлы PKCS12 (или PFX) обычно используются для перемещения наборов сертификатов в Micrsoft IIS (Windows).

Конвертация PKCS12 в PEM

Чтобы конвертировать файл PKCS12 в формат PEM, введите:

Если в файле PKCS12 было несколько объектов (например, ключ и сертификат), все они переместятся в файл PEM.

Что делать если нет сертификата в запросах заявок на сертификат

Бывают ситуации, что на вашем сервере по каким-то причинам, в папке запросы на сертификат, может не оказаться вашего, в этом случае вам необходимо будет перейти в этой же mmc в раздел «Личное-Сертификаты». Выбираем нужный и делаем экспорт.

Появится мастер экспорта сертификатов.

Обратите внимание, что в pfx выгрузить не получится, но это не страшно, нам подойдет и p7b, но с включенной галкой «Включить по возможности все сертификаты в путь сертификации»

Указываем путь сохраняемого файла.

Видим, что все успешно выполнено.

Преобразование p7b в pem

Попробует такое преобразование.

openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

Мой пример

openssl.exe pkcs7 -in new.pyatilistnik.ru.p7b -inform DER -print_certs -out new.pyatilistnik.ru.pem

В итоге я получил файл new.pyatilistnik.ru.pem

Ну, а дальше уже по инструкции сверху. Если у вас выскочит ошибка, по типу

C:\AMD64-Win64OpenSSL-0_9_8g>openssl.exe rsa -in new.pyatilistnik.ru.pem -out new. pyatilistnik.ru.key unable to load Private Key 6944:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib .c:647:Expecting: ANY PRIVATE KEY

То наш вариант это .crt в .der и уже .der в .pem

Преобразование CRT в PEM

Кладем так же все в одну папку, файл crt вам должны были прислать вместе с ca-bundle.

Первое это crt в der

openssl x509 -in new.pyatilistnik.ru.crt -out new.pyatilistnik.ru.der -outform DER

Теперь der в pem.

openssl x509 -in new.pyatilistnik.ru.der -inform DER -out new.pyatilistnik.ru.pem -outform PEM

В итоге у меня получилось, вот так.

Formats

PGP Public Key

For OpenSSL to recognize it as a PEM format, it must be encoded in Base64, with the following header:

Also, each line must be maximum 79 characters long. Otherwise you will receive the error:

Note: the PEM standard (RFC1421) mandates lines with 64 characters long. A PEM certificate stored as a single line can be converted with the UNIX command-line utility:

  • PKCS#1 RSAPublicKey (PEM header: BEGIN RSA PUBLIC KEY)
  • PKCS#8 EncryptedPrivateKeyInfo (PEM header: BEGIN ENCRYPTED PRIVATE KEY)
  • PKCS#8 PrivateKeyInfo (PEM header: BEGIN PRIVATE KEY)
  • X.509 SubjectPublicKeyInfo (PEM header: BEGIN PUBLIC KEY)
  • CSR PEM header : (PEM header:—-BEGIN NEW CERTIFICATE REQUEST—–)
  • DSA PrivateKeyInfo (PEM header: (—–BEGIN DSA PRIVATE KEY—-)
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: