Let’s encrypt и nginx: настройка в debian и ubuntu

Аутентификация по SSL

Как мы уже знаем из этой статьи о SSL, во время создания соединения клиента к серверу одна аутентификация уже точно есть. Это когда клиент аутентифицирует сервер, т.е. убеждается, что сервер — этот тот, за кого он себя выдает. Эта аутентификация выполняется клиентом посредством проверки сертификата сервера. А именно:

  1. Клиент получает сертификат от сервера
  2. Проверяет, что CN поле сертификата совпадает с адресом, по которому клиент подключается.
  3. Клиент проверяет, что сертификат есть в хранилище доверенных сертификатов (наш случай), либо проверяет, что сертификат подписан с помощью сертификата авторизованного центра.

Однако, под аутентификацией в контексте настройки сервера Kafka подразумевается именно аутентификация клиента на сервере. Поэтому добавлением этой аутентификации мы и займемся.

Аутентификация клиента на сервере будет работать почти точно также, как и сервера на клиенте. Только клиент и сервер поменяются ролями! И да, проверка сертификата будет только по наличию его в хранилище.

Поэтому, чтобы настроить аутентификацию клиента на сервере, нам нужно выполнить следующие шаги:

  1. Выпустить приватный ключ и сертификат для клиента
  2. Создать хранилище сертификатов клиента и поместить туда приватный ключ и сертификат клиента
  3. Положить в хранилище доверенных сертификатов сервера сертификат клиента
  4. Настроить клиент и сервер

Как SSL-сертификат помогает защитить данные?

На самом деле схема защиты трафика основана на его шифровании открытым ключом и его расшифровке закрытым ключом. Понятие SSL-сертификата применимо в контексте подтверждения того факта, что открытый ключ действительно принадлежит именно тому домену, с которым происходит соединение. Таким образом, в данной схеме присутствуют две составляющие:

  • Пара ключей (открытый и закрытый) — для шифрования/расшифровки трафика;
  • Подпись открытого ключа. Гарантирующая, что он подлинный и обслуживает именно тот домен, для которого и был создан.

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

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

е. расшифровать закрытым ключом.

Общий порядок создания SSL-сертификата, ключи и подпись

Во время создания SSL-сертификата происходит последовательная обработка следующих видов ключей:

  • *.key – это сами ключи шифрования, открытий и/или закрытый;
  • *.csr – ключ, содержащий сформированный запрос для получения подписи сертификата от центра сертификации, а сам запрос — это открытый ключ и информация о домене и организации, связанной с ним;
  • *.crt, *.cer, *.pem – это, собственно, сам сертификат, подписанный центром сертификации по запросу из файла *.csr.

Для начала нужно создать закрытый ключ:

$ openssl genrsa -des3 -out server.key 2048

Здесь команда genrsa генерирует RSA-ключ, опция -des3 указывает алгоритм шифрования ключа. А опция -out указывает, что ключ должен быть получен в виде файла server.key. Число 2048 — это сложность шифрования. При выполнении этой команды пользователю будет предложено ввести пароль для шифрования. Поскольку указан его алгоритм опцией -des3. Если это личный ключ и его планируется использовать на сервере, который можно настроить в собственных целях, то естественно шифрование обязательно. Однако, многие серверы требуют закрытые ключи без шифрования (например хостинг-площадки, поскольку предоставляют универсальную услугу по заказу SSL-сертификатов). Поэтому перед генерацией закрытого ключа нужно определиться, как он будет использоваться.

Теперь нужно создать запрос на подпись — CSR-файл, который будет включать только что сгенерированный ключ server.key:

$ openssl req -new -key server.key -out server.csr

При выполнении этой команды пользователю необходимо ввести информацию о домене и организации. Причём наименование домена следует вводить точно, например, если идентификатор URL сайта https://mycompany.com, то ввести нужно mycompany.com. Для URL-идентификатора www.mycompany.com уже необходим отдельный сертификат.
Теперь файл server.csr со сформированным запросом на подпись можно отправить в выбранный центр сертификации.

КОНВЕРТАЦИЯ SSL СЕРТИФИКАТОВ В OPENSSL

Данные команды OpenSSL дают возможность преобразовать сертификаты и ключи в разные форматы. Для того чтобы сделать их совместимыми с определенными видами серверов, либо ПО. К примеру, Вам необходимо конвертировать обыкновенный файл PEM, который будет работать с Apache, в формат PFX (PKCS # 12) с целью применения его с Tomcat, либо IIS.

  • Конвертировать 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
  • Конвертировать DER в PEM openssl x509 -inform der -in certificate.cer -out certificate.pem
  • Конвертировать P7B в PEM openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
  • Конвертировать P7B в PFX openssl pkcs7 -print_certs -in certificate.p7b -out certificate.ceropenssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
  • Конвертировать PFX в PEM openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

Подписание SSL-сертификатов

Получить подписанный сертификат, когда имеется закрытый ключ и запрос на подпись можно несколькими способами: воспользоваться услугой авторитетных центров сертификации, отправив им запрос (CSR-файл) и получив в ответ готовый сертификат *.crt. Либо можно сделать сертификат самоподписанным. Т. е. подписать его тем же ключом, который использовался при создании файла CSR. Для этого следует выполнить команду:

$ openssl x509 -signkey server.key -in server.csr -req -days 365 -out server.crt

Здесь опция -days указывает количество дней, в течение которых выпускаемый сертификат server.crt будет действителен. В данном случае на протяжении одного года.
Также можно создать самоподписанный сертификат из имеющегося закрытого ключа без использования CSR-файла. Но в этом случае нужно вводить информацию CSR-запроса:

$ openssl req -key server.key -new -x509 -days 365 -out server.crt

Параметр -x509 задаёт формат генерируемого сертификата. Он является самым распространённым и используется в большинстве случаев. Опция -new позволяет запрашивать информацию для запроса у пользователя.

Важно отметить, что сертификаты, подписанные авторитетными центрами сертификации известны веб-браузерам. Самоподписанные сертификаты необходимо импортировать в хранилище доверенных сертификатов веб-браузера вручную

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

Загрузка через операционную систему Windows

Запускаем. Откроется окно, куда необходимо ввести параметры подключения по протоколу SSH.

Слева вы увидите папки и файлы локальной машины, справа — файлы рабочего сервера, к которому подключились. Следует выбрать (либо создать, если такового нет) место, куда отправятся сертификаты. Используя функцию drag-n-drop, зажав левую клавишу мышки, переносите файлы .CA и .CRT.

Важно: удобнее будет сохранить .key в том же месте, где уже лежат файлы сертификатов. Это необязательно, но тогда вам придется запоминать расположение этого файла и указывать этот путь при конфигурации Apache, а не путь с нашего примера

Чтобы сделать копию .key и отправить в иную директорию, в случае генерации закрытого ключа на сервере, можно воспользоваться командой:

При этом:

cp — отвечает за копирование;/home/root/ — путь к файлу, если вы зашли «под рутом»;private.key — имя файла самого ключа;/etc/ssl/private.key — путь, куда мы хотим скопировать ключ.

Можно воспользоваться командой и удалить ключ в старой директории:

1 ответ

Лучший ответ

Да, но вы не хотите.

Java использует файлы хранилища ключей, такие как JKS, и объекты в памяти для хранения два (или три) разных вида информации, но многие люди неточно называют оба сертификата сертификатами и не понимают огромная и критическая разница. В частности (и изменение порядка из javadoc):

  • Запись TrustedCertificate содержит « сертификат … принадлежащий другой стороне … Этот тип записи может использоваться для аутентификации других сторон».

  • запись закрытого ключа содержит закрытый ключ ПЛЮС ЦЕПЬ сертификатов, «используемую данным объектом для самоутентификации».

  • для полноты, некоторые хранилища ключей могут содержать запись SecretKey, но JKS не может, и даже в тех хранилищах, которые могут, эта возможность используется редко.

У вас есть все сертификаты (один в файлах с шестнадцатеричным именем, несколько в файле пакета), а не частные ключи. Вы можете импортировать каждый из них в запись TrustedCert, но записи TrustedCert используются только для проверки другого конца связи, т. Е. Когда вы подключаетесь к серверу, записи TrustedCert используются для проверки того, что серверный сертификат, и если вы принимаете соединение от клиента и запрашиваете аутентификацию клиента (что не является значением по умолчанию и встречается редко), записи TrustedCert используются для проверки сертификата этого клиента. Но поскольку этот сертификат был выдан GoDaddy, если он правильно используется (с его цепочкой) сервером или клиентом, с которым вы общаетесь, вам не нужны никакие записи TrustedCert , потому что он уже проверяется на корень. в хранилище доверенных сертификатов Java по умолчанию.

Если вы хотите использовать этот сертификат для аутентификации «себя» (то есть вашей системы) — например, если вы хотите запустить TLS-сервер (возможно, но не обязательно HTTPS веб сервер), идентифицированный этот сертификат — вам понадобится запись PrivateKey, а не какие-либо записи TrustedCert, и вы не можете создать запись PrivateKey , потому что у вас нет закрытого ключа. У человека, получившего этот сертификат от GoDaddy, есть закрытый ключ, поскольку он требуется для процесса запроса сертификата, поэтому они могут, например, запустить сервер, но вам его не дали, поэтому вы не можете.

Таким образом, ответ на заданный вами вопрос — можете ли вы поместить эти сертификаты в JKS — да, можете. Но это пустая трата времени, потому что полученные JKS ни для чего не годятся и бесполезны.

1

dave_thompson_085
13 Ноя 2020 в 07:14

Создадим самоподписанный сертификат

Нужно использовать OpenSSL для создания самоподписанного сертификата.
Чтобы создать ключ который будет использоваться в сертификате, мне понадобится права root:

Создим приватный ключ

# openssl genrsa -out ca.key 1024

Создим CSR (Certificate signing request)

# openssl req -new -key ca.key -out ca.csr

Создим самоподписанный ключ (допустим на 1 год — 365 дней)

# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

После того как ключик(и) был сгенерирован, необходимо скопировать (положить в нужное место) его/их:

# cp ca.crt /etc/pki/tls/certs
# cp ca.key /etc/pki/tls/private/ca.key
# cp ca.csr /etc/pki/tls/private/ca.csr

Поправим сейчас файлик с конфигурацией сертификатов, нам нужно найти строчку «SSLCertificateFile» в файле ssl.conf который лежит по пути /etc/httpd/conf.d/, сделать можно это так:

Если Вы фанат текстового редактора «vi»:

# vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf

Но я использую текстовый редактор «ee», по этому:

# ee /etc/httpd/conf.d/ssl.conf

В этом файлике нужно раскомментировать необходимые строки, в моем случае это:

SSLCertificateFile /etc/pki/tls/certs/ca.crt # путь к файлу ключа (Certificate Key File)
SSLCertificateKeyFile /etc/pki/tls/private/ca.key # путь к файлу приватных ключей

Сохраняемся и ребутнул Apache:

# /etc/init.d/httpd restart

Проверим работу  сертификата который использует протокол https:https://192.168.77.113/

У вас будет другой адрес, адрес(ServerName) который Вы прописывали в конфиге апача. После того как перейдете по своему адресу вам будет показано сообщение чтобы Вы подтвердили данный сертификат.

Если вы используете виртуальные хосты, то необходимо прописать сертификаты в них:

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
# Установка сертификата SSL в CentOS
<Directory /var/www/vhosts/test.com/httpsdocs>
AllowOverride All
</Directory>
DocumentRoot /var/www/vhosts/test.com/httpsdocs
ServerName test.com
</VirtualHost>

После чего нужно ребутнуть апачик:

# /etc/init.d/httpd restart

Возможно Вам понадобится прописать в iptables (в вашем фаерволе) правило для данного порта (443), который использует https:

# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# /sbin/service iptables save
# iptables -L -v

Установка сертификата SSL в CentOS выполнена. Коротко и понятно.

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

Бывают ситуации, что на вашем сервере по каким-то причинам, в папке запросы на сертификат, может не оказаться вашего, в этом случае вам необходимо будет перейти в этой же 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

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

Извлечение открытого и закрытого ключей из сертификата jks (сертификат jks в сертификат pem)

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»clear:both;»>

конвертировать JKS в P12, а затем преобразовать P12 в Pem

AndroidStudio использует файл хранилища ключей для подписи APK, но быстрое приложение требует PEM-файл для подписи RPK.

Существующий demo.jks, пароль сертификата — это demopwd, после преобразования в pem demopwd все еще используется в качестве пароля.

Способ 1. Используйте команды cmd и openssl

Извлеките открытый ключ:

Переключитесь на путь хранения сертификата jks и выполните следующую команду: keytool -list -rfc -keystore demo.jks -storepass demopwd

Если появляется следующее сообщение об ошибке:

Затем скопируйте файл demo.jks в тот же каталог, в котором находится файл keytool.exe, keytool находится в каталоге jdk bin, после копирования переключателя cmd в каталог bin и повторите команду.

Затем вы можете увидеть напечатанное содержимое открытого ключа (т.е. Сертификат) в командной строке, как показано ниже

Извлечь закрытый ключ:

Закрытый ключ в файле jks не может быть получен напрямую. Вам необходимо преобразовать файл jks в формат pkcs12 через openssl, а затем извлечь его.

Выполните следующую команду, чтобы преобразовать файл demo.jks в файл demo.pfx:

keytool -v -importkeystore -srckeystore demo.jks -srcstoretype jks -srcstorepass demopwd -destkeystore demo.pfx -deststoretype pkcs12 -deststorepass demopwd -destkeypass demopwd

После выполнения команды в каталоге будет находиться файл demo.pfx.

Затем выполните следующую команду, чтобы экспортировать закрытый ключ demo.pfx:

openssl pkcs12 -in demo.pfx -nocerts -nodes -out demo.key

После ввода пароля будет создан файл demo.key, открытый для просмотра содержимого.

Интеллектуальная рекомендация

19.03.21 Я загрузил комплексные обучающие видеоуроки Photoshop CC 2015 и обучающие видеоуроки по новым функциям PS CC 2015. Я просмотрел несколько видео, но мне кажется, что они в основном объясняют н…

проверка данных весеннего mvc Два способа проверки данных Spring MVC: 1.JSR303 2.Hibernate Validator Второй метод является дополнением к первому методу Шаги для проверки данных с использованием Hibern…

Существует два способа вызова между сервисами Springcloud: RestTemplate и Feign. Здесь мы представляем сервисы вызова RestTemplate. 1. Что такое RestTemplate RestTemplate — это структура веб-запросов …

1. Понимать предварительный, средний, последующий порядок и иерархическую последовательность бинарных деревьев; Свяжите язык C со структурой данных двоичного дерева; Освойте с…

Вам также может понравиться

Последнее обучение, как использовать Kaldi, чтобы проснуться без использования WSTF, поэтому вам нужно глубоко пойти в Kaldi для обучения. Временное состояние обучения. Три изображения представляют со…

Во время простоя некоторые веб-страницы, которые мы создали, не были завершены, но не хотят, чтобы другие видели, вы можете создать простой эффект шифрования страницы на странице этой веб-страницы, ан…

Расширенные статьи серии Zookeeper 1. NIO, ZAB соглашение, 2PC представления концепции 2. Лидер выборов 3. Рукописный распределенный замок, центр настройки ==================================== 1. NIO,…

Посмотрите на конечный эффект первым DemoPreview.gif SETP1 эффект капли воды Первая реакция на эффект капли воды — нарисовать замкнутую кривую. С помощью события MotionEvent измените радиус во время п…

Ответ 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 в части, касающейся ключей и сертификатов.

Объединить файлы.CRT, .KEY и.CA-BUNDLE

Для того, чтобы это сделать, установите на ваш компьютер программу openssl.exe .

Откройте данную утилиту и введите команду:

pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -certfile domain.name.ca-bundle

domain.key — имя файла с приватным ключом RSA;

domain.crt — имя файла сертификата;

domain.ca-bundle — имя файла цепочки сертификатов.

Если конвертация прошла успешно, вы увидите слово Verifying.

Часто используемые форматы сертификатов: PEM
— очень часто используется в Linux based системах или оборудовании, файлы такого формата сертификата используют расширение.cer, .crt, and .pem. DER
— двоичная формат сертификата. DER формат не содержит текста «BEGIN CERTIFICATE/END CERTIFICATE», формат DER чаще всего использует расширение.der PKCS#7
или P7B
— эти форматы сертификата хранятся в формате Base64 ASCII и чаще всего имеют расширения файлов.p7b или.p7c. Файл P7B, кроме самого сертификата содержит цепочку сертификатов (открытых ключей) выпускающих центров сертификации (Intermediate CAs). Этот формат поддерживается в Windows и Java Tomcat. PKCS#12
или PFX
— эти форматы представляют собой двоичный формат для хранения сертификата сервера, промежуточных сертификатов и закрытого ключа в одном зашифрованном файле. Файлы такого формата сертификата используют расширение.pfx and .p12. PFX файлы обычно используются на windows машинах для импорта/экспорта сертификатов и закрытого ключа.

Конвертирование 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.cer
2. Конвертирование
CER и закрытого ключа в
PFX

openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile cacert.cer

Я отвечаю за поддержку двух серверов Debian. Каждый раз, когда я должен что-либо делать с сертификатами безопасности, я Google для учебных пособий и отбиваю, пока он, наконец, не работает.

Однако в моих поисках я часто сталкиваюсь с разными форматами файлов (.key , .csr , .pem)), но я никогда не было в состоянии найти хорошее объяснение того, какова цель каждого файла.

Мне было интересно, могут ли хорошие люди здесь в ServerFault дать некоторые разъяснения по этому вопросу?

Обновление сертификата

Если планируется использовать сертификат SSL от Let’S Encrypt более 90 дней, его придется систематически обновлять. И делать это рекомендуется заранее, минимум за 30 дней до истечения срока действия. Иначе возникают риски временной неработоспособности протокола SSL, когда сайт перестает открываться по прежним ссылкам (браузеры предупреждают об ошибке).

Выполняется процедура обновления командой:

$ certbot renew

После ее ввода будут проверены все ранее выпущенные и установленные в системе сертификаты и заново созданы те, по которым сроки подходят к концу. Если хочется настроить автоматический перевыпуск SSL, нужно ввести команду cron:

$crontab -e

30 2 * * 1 /usr/bin/certbot renew >> /var/log/renew-ssl.log

В таком виде она каждый понедельник в 2:30 будет выполнять проверку актуальности всех SSL и записывать результат в файл с указанным названием.

Способы конвертации

Существует несколько способов конвертации сертификатов, которые отличаются между собой только простотой конвертирования и уровнем безопасности. Мы расскажем о трех из них.

Конвертация 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.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

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