Форматы сертификатов
До этого в руководстве рассматривались только сертификаты 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.
Ответ 1
SSL появился достаточно давно и существуют определенные форматы контейнеров. Их слишком много, как это обычно бывает. Итак, вот что я знаю, и я уверен, что другие подтвердят мое мнение.
.csr — Это запрос на подписание сертификата. Некоторые приложения могут генерировать их для отправки в центры сертификации. Фактический формат — PKCS10, который определен в RFC 2986. Он включает некоторые/все ключевые детали запрашиваемого сертификата, такие как субъект, организация, штат и т.д., а также открытый ключ сертификата, который должен быть подписан. Сначала его необходимо подписать в центре сертификации. Возвращенный сертификат — это открытый сертификат (который включает открытый ключ, но не закрытый ключ), который сам может быть в нескольких форматах.
.pem — определенный в RFC с 1421 по 1424, это контейнерный формат, который может включать только открытый сертификат (как, например, при установке Apache и файлов сертификатов CA /etc/ssl/certs), или может включать всю цепочку сертификатов, включая открытый ключ, закрытый ключ и корневые сертификаты. Настораживает то, что он также может быть закодирован в CSR, Поскольку формат PKCS10 может быть переведен в PEM. Название происходит от Privacy Enhanced Mail (PEM), неудачного метода для безопасной электронной почты. Но формат контейнера, который он использовал, продолжает жить и является переводом x509 ASN.1 ключей в base64.
.key — Это файл в формате PEM, содержащий только закрытый ключ конкретного сертификата, и это просто условное, а не стандартизированное название. В установках Apache он часто находится в каталоге /etc/ssl/private. Права на эти файлы очень важны, и некоторые программы откажутся загружать эти сертификаты, если они установлены неправильно.
.pkcs12 .pfx .p12 — Первоначально определенный RSA в Стандартах криптографии открытых ключей (сокращенно PKCS), вариант «12» был первоначально усовершенствован Microsoft, а затем представлен как RFC 7292. Это формат контейнера с паролем, который содержит пары публичных и приватных сертификатов. В отличие от файлов .pem, этот контейнер полностью зашифрован. OpenSSL может превратить его в файл .pem с открытым и закрытым ключами:
openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem –nodes
Есть также, несколько других форматов, которые попадаются, время от времени:
.der — способ кодирования синтаксиса ASN.1 в двоичном формате, файл .pem — это просто файл .der, закодированный в Base64. OpenSSL может конвертировать их в .pem (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows воспринимает их как файлы сертификатов. По умолчанию Windows, экспортирует сертификаты как файлы в формате .DER с другим расширением..
.cert .cer .crt — файлы в формате .pem (или редко .der), но с другим расширением, которые распознаются проводником Windows как сертификат, а .pem таковым не является.
.p7b .keystore — Определенный в RFC 2315 как PKCS номер 7, это формат, используемый Windows для обмена сертификатами. Java воспринимает их как нативные, и часто использует .keystore в качестве расширения. В отличие от сертификатов в стиле .pem, этот формат имеет определенный способ включения сертификатов сертификационного пути.
.crl — список отзыва сертификатов. Центры сертификации выпускают их как способ деавторизации сертификатов по истечению срока действия. Иногда их можно загрузить с веб-сайтов центров сертификации.
В целом, существует четыре различных способа представления сертификатов и их компонентов:
- PEM — регулируется RFC, используется преимущественно в программах с открытым исходным кодом. Он может иметь различные расширения (.pem, .key, .cer, .cert и т.д.).
- PKCS7 — Открытый стандарт, используемый Java и поддерживаемый Windows. Не содержит закрытый ключ.
- PKCS12 — закрытый стандарт Microsoft, который позже был определен в RFC и обеспечивает повышенную безопасность по сравнению с обычным текстовым форматом PEM. Он может содержать закрытый ключ. Он используется преимущественно в системах Windows и может быть свободно преобразован в формат PEM с помощью OpenSSL.
- DER — родительский формат PEM. Полезно рассматривать его как двоичную версию файла PEM с кодировкой base64. Редко используется за пределами Windows.
Способы конвертации
Существует несколько способов конвертации сертификатов, которые отличаются между собой только простотой конвертирования и уровнем безопасности. Мы расскажем о трех из них.
Конвертация SSl сертификатов посредством OpenSSL
OpenSSL — это надежный, коммерческий и полнофункциональный инструментарий для протоколов Transport Layer Security (TLS) и Secure Sockets Layer (SSL). А также библиотека криптографии общего назначения. Конвертация с использованием библиотеки OpenSSL считается одним из самых безопасных способов: все данные будет сохранены непосредственно на устройстве, на котором будут выполняться операции по конвертированию.
Для того чтобы воспользоваться им, вам необходимо перейти в командную строку и выполнить команды.
Предоставленные ниже примеры команд OpenSSL позволяют конвертировать сертификаты и ключи в нужный формат.
Конвертировать PEM в DER можно посредством команды:
openssl x509 -outform der -in site.crt -out site.der
Аналогично, для других типов:
PEM в P7B
openssl crl2pkcs7 -nocrl -certfile site.crt -out site.p7b -certfile site.ca-bundle
PEM в PFX
openssl pkcs12 -export -out site.pfx -inkey site.key -in site.crt -certfile site.ca-bundle
Обращаем ваше внимание, что после выполнения команды, будет запрошена установка пароля ключа. DER в PEM
DER в PEM
openssl x509 -inform der -in site.der -out site.crt
P7B в PEM
openssl pkcs7 -print_certs -in site.p7b -out site.cer
P7B в PFX
openssl pkcs7 -print_certs -in site.p7b -out certificate.ceropenssl pkcs12 -export -in site.cer -inkey site.key -out site.pfx -certfile site.ca-bundle
PFX в PEM
openssl pkcs12 -in site.pfx -out site.crt -nodes
Конвертация при помощи онлайн-сервисов
Для конвертации сертификатов самый удобный способ — использование специальных сайтов, например, https://ssl4less.ru/ssl-tools/convert-certificate.html
Этот способ считается наименее безопасным методом: никогда не знаешь, сохраняет ли автор сайта ваш приватный ключ при конвертации.
Конвертация с PEM в DER
Для конвертации необходим только файл сертификата .crt, .pem
Конвертация с PEM в P7B
В этом случае существует возможность добавить также цепочку сертификатов.
Что такое цепочка сертификатов и для чего она нужна, можно узнать в статье «Что такое корневой сертификат»
Конвертация с PEM в PFX
В этом случае необходимо обратить внимание на то, что обязателен ключ сертификата, а также необходимо установить пароль ключа. Конвертация из DER в PEM
Конвертация из DER в PEM
Конвертация из P7B в PEM
Конвертация из P7B в PFX
Конвертация из PFX в PEM
Конвертация скриптом openssl-ToolKit
OpenSSL ToolKit — скрипт, который облегчает работу с библиотекой OpenSSL. Работа со скриптом является безопасным решением, т.к сертификаты и ключи сертификата никуда не передаются, а используются непосредственно на вашем сервере.
Для начала работы скрипт необходимо скачать и запустить. Сделать это можно одной командой:
echo https://github.com/tdharris/openssl-toolkit/releases/download/1.1.0/openssl-toolkit-1.1.0.zip \ | xargs wget -qO- -O tmp.zip && unzip -o tmp.zip && rm tmp.zip && ./openssl-toolkit/openssl-toolkit.sh
После выполнения команды откроется следующее окно:
Нас интересует пункт
После перехода в пункт 2. появится следующее меню, с выбором нужного типа конвертирования
После выбора преобразования, в данном случае PEM to FPX, скрипт предложит выбрать директорию с сертификатами на том устройстве, где запускается скрипт.
В нашем случае мы их скачали в директорию
После корректного ввода директории, скрипт отобразит все файлы в этой директории.
Далее нужно ввести имя сертификата, который будем конвертировать, в нашем случае это
Обращаю ваше внимание, что для корректной конвертации, с PEM в PFX, необходимо вручную объединить файл сертификата, цепочки и ключа в один файл, иначе будет возникать ошибка конвертации. Сделать это можно простой командой
Сделать это можно простой командой
cat site.crt site.ca-bundle site.key > site.pem
Данное действие необходимо только для конвертации из PEM в PFX.
Мы рассмотрели пример конвертации PEM в PFX. Этим же путем можно конвертировать сертификаты в другие форматы. Единственное, что вам уже не понадобится шаг с объединением файлов.
Пример конвертации PEM В DER.
Генерирование запроса на подпись сертификата
Генерирование закрытого ключа и запроса
Этот метод позволяет вам подписать сертификат в ЦС и защитить веб-сервер 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.
Ответ 2
PEM — сам по себе не является сертификатом, это просто способ кодирования данных. Сертификаты X.509 — это один из типов данных, которые обычно кодируются с помощью PEM.
PEM — это сертификат X.509 (структура которого определена с помощью ASN.1), закодированный с помощью ASN.1 DER (distinguished encoding rules), затем закодированный Base64 кодировкой и вставленный между заголовками текста (BEGIN CERTIFICATE и END CERTIFICATE).
Вы можете представить те же данные, используя представления PKCS#7 или PKCS#12, и для этого можно использовать утилиту командной строки OpenSSL.
Очевидным преимуществом PEM является то, что его безопасно вставлять в тело электронного сообщения, поскольку он имеет заголовки и 7-битную кодировку.
RFC1422 содержит более подробную информацию о стандарте PEM в части, касающейся ключей и сертификатов.
Установка OpenSSL для Windows
Теперь нам необходимо наш файл pfx переделать в pem, Pem преобразовать в key:
- с расширением .ca-bundle
- с расширением .crt
- key
Вы получите из этих трех файлов, нужный для импорта pfx архив. Во всем этом нам поможет утилита OpenSSL для Windows.
Скачать OpenSSL для Windows x64 — https://cloud.mail.ru/public/MZmy/yKvJkc7Ad
В итоге у вас будет архив, распакуйте его куда вам будет угодно. Далее выберите вашу папку, зажмите SHIFT и щелкните по ней правым кликом, в открывшемся контекстном меню, выберите пункт «Открыть окно команд».
В результате чего у вас откроется командная строка Windows, но уже в нужной папке содержащей утилиту openssl.exe, она нам и поможет все сделать красиво.
Преобразование PFX в PEM
Теперь приступаем к получению фала в формате Pem. Положите в папку с дистрибутивом файл в формате pfx.
openssl.exe pkcs12 -in «имя вашего pfx файла» -nocerts -out key.pem
Мой пример:
openssl.exe pkcs12 -in api.pyatilistnik.ru.pfx» -nocerts -out key.pem
Вас попросят указать пароль от Pfx архива, вы его задавали при экспорте, после чего нужно придумать пароль на pem файл.
В папке с дистрибутивом OpenSSL вы обнаружите файл key.pem, он нам нужен будет для следующего этапа.
Преобразование PEM в KEY
Теперь получим файл с расширением key, для этого есть вот такая команда:
openssl rsa -in key.pem -out <путь к вашему файлу key>
Мой пример:
openssl rsa -in key.pem -out api.pyatilistnik.ru.key
Вас попросят указать пароль от pem ключа.
В итоге я получил закрытый ключ в формате key.
Осталась финишная прямая.
Получаем PFX ключ для импорта в IIS
Теперь когда у вас есть все составляющие, вы можете выполнить последнюю команду для создания PFX файла для IIS сервера.
Задаем пароль для pfx файла, потребуется при импортировании.
В итоге вы получаете нужный вам файл, который можно загружать на ваш почтовый сервер.
ОНЛАЙН КОНВЕРТЕР SSL СЕРТИФИКАТОВ
Также существуют онлайн программы для конвертации сертификатов из одного формата в другой. Например, мы можем посоветовать SSL конвертер от SSLShopper. Используйте этот SSL конвертер для преобразования SSL-сертификатов различных форматов, таких как PEM, DER, P7B и PFX. Чтобы использовать SSL-конвертер, просто выберите файл сертификата и его текущий тип (он определяется по формату расширения), затем выберите формат, в какой Вам необходимо преобразовать SSL сертификат и нажмите кнопку “Convert Certificate”
Обратите внимание, что в зависимости от того, в какой формат вам нужно конвертировать SSL сертификат, от вас потребуются разные исходящие файлы
КОНВЕРТАЦИЯ PEM В DER
Для конвертации стандартного сертификата в формате PEM в бинарный формат DER, потребуется только файл SSL сертификата. Обычно, вы его получаете в архиве вместе с промежуточными сертификатами. Как правило, в его названии указано имя вашего домена.
КОНВЕРТАЦИЯ PEM В P7B / PKCS#7
Если же вам нужно преобразовать ваш стандартный SSL сертификат в файл формата P7B / PKCS#7, вы можете кроме SSL сертификата вашего домена загрузить также файлы с цепочками сертификатов.
ОБЗОР ФОРМАТОВ 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 серверах для импорта и экспорта файлов сертификатов и вашего приватного ключа.
SEO и SSL
- Google заявлял о том, что присутствие https на сайте является положительным фактором для ранжирования. То есть из двух абсолютно одинаковых сайтов, в поисковой выдаче выше будет тот, который с https
- Если некоторые части сайта мигрировали в HTTPS, а некоторые — нет, то позитивный сигнал к ранжированию получат только страницы с https в URL-адресах.
- Есть слухи что Google Chrome будет помечать сайты без https как не надежные.
- Необходимо использовать 2048-разрядные ключи для всех сертификатов.
- Используйте относительные URL адреса, это облегчит переход с http на https
- Для перехода с http на https можно использовать редирект в файле htaccess
- Убедитесь что в теге rel=»canonical» используются ссылки с http, а не https
- Убедитесь что в индексе поисковиков не присутствуют одновременно и http и htpps версии одной страницы — это может восприниматься как дублированный контент
- CSS, JS, изображения и прочие файлы также должны использовать https
CSR Запрос SSL сертификата
При покупке SSL сертификата при помощи специальных утилит или сервисов генерируется CSR запрос (Certificate Signing Request) в котором закодированы следующие данные:
- Common Name: elims.org.ua — доменное имя, защищаемое сертификатом
- Organization: elimS — компания-владелец домена
- Organization Unit: IT — департамент\отдел компании
- Locality: Kiev — город
- State: Kiev — область
- Country: UA — двухбуквенный код страны
- Email: admin@elims.org.ua — почтовый ящик
При генерации запроса получаем две части: публичную, которую нужно сообщить тому, кто генерирует нам сертификат (центру сертификации) и приватную, которую нужно будет прописать на сервере, где будет находиться ваш сайт с ssl-сертификатом.
Ниже пример публичной части такого CSR запроса, в котором закодированы указанные выше данные:
-----BEGIN CERTIFICATE REQUEST----- MIICyDCCAbACAQAwgYIxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0wCwYD VQQHDARLaWV2MQ4wDAYDVQQKDAVlbGltUzELMAkGA1UECwwCSVQxFTATBgNVBAMM DGVsaW1zLm9yZy51YTEhMB8GCSqGSIb3DQEJARYSYWRtaW5AZWxpbXMub3JnLnVh MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvcvusWoQJ+iVE9Z8bD6F k00/GMiwLNi+mR0EJwp2TGybVgUnydlK2FV8o0091ZuGrkniwnoimX+8N4ATzem1 jMeXlScqmLdWL2R6DnUTWHiIWezAmyIO51gBiMJ0E+jbfnauog2rNXTgGZbzJRvR 7y8hnL10DYtCfbCObxERynJWzxBFmK0qm8NREMMTa1dZGgmT7e9+afLMaKYqLlcM DGQNvIQyehI4g8aQwS2OJ7JuTcTXMusWjSQFIMeleg8nkuWJZ6awtTN6Rubh/VHI XO7LC4zdo8xzo8ub4calLSwi5Flr5iZUyzYxrqj2raBQ9pH1nCCyczlkH6I1HaHq nwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAG2HoDX4zfmk331tp+VCEIpGooUt 1EgwGLf73SD7x7ZH6K0fe44cKECmc//Gdvr3UObckYw/aMgR88eGmWnpkjhGz0kX IfCqpK5zkoaBihofbs1G8+liuocvnMtKCphH/56GPAxPG/K7breJMGiaEkAq0Axn ozbvvSBbzILdV7xygSib6D20rvdsNOh7fKzo0bSgBhizuQ4/c0uPCTRzFrOvVVNW mY1NPF4IkurN2iEhbrGlJbKTki+SNh8oRrLyXDzqJE8QcZHKnO69JECGMTjhCDGI Kr/rxRB/p7qmlCUqhlVS2A6NhicKvAs+s9gE8BZE4uKXtp5vaOXxlJofpC0= -----END CERTIFICATE REQUEST-----
Раскодировать CSR и посмотреть что в нем зашифровано, например при помощи этих сервисов:
- sslshopper.com/csr-decoder.html
- certlogik.com/decoder
Или утилиты openssl и команды:
После того как центр сертификации убедится в правильности переданных данных (в CSR запросе) Вам будет выдан SSL сертификат. Время проверки зависит от типа сертификата. Сертификаты подтверждающие только доменное имя (самые дешевые сертификаты) выдаются в автоматическом режиме, так как в них не нужно проверять существует ли указанная компания, ее контакты тд. и тп.
Создать CSR с новым сертификатом через утилиту OpenSSL
openssl req -new -newkey rsa:2048 -nodes -keyout domain_name.key -out domain_name.csr
Что делать если нет сертификата в запросах заявок на сертификат
Бывают ситуации, что на вашем сервере по каким-то причинам, в папке запросы на сертификат, может не оказаться вашего, в этом случае вам необходимо будет перейти в этой же 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
В итоге у меня получилось, вот так.