Загрузить PKCS12-файл для создания HTTPS-слушателя

Последние изменения: 27.08.2023

Управление секретами — это раздел, куда можно загрузить PKCS12-файлы (в системе называются секретами). Они нужны для создания балансировщиков нагрузки с HTTPS-слушателями.

e2df6af04c60dc549f28ba927bb8fb43.png


Что такое PKCS12-файл
Как создать PKCS12-файл
       1. Подготовьте файлы сертификата
       2. Объедините файлы сертификата в PKCS12
       3. Закодируйте результат в base64
Как создать балансировщик нагрузки с HTTPS-слушателем

Что такое PKCS12-файл

PKCS12 (Public-Key Cryptography Standards) — это двоичный формат для хранения SSL/TLS-сертификата, цепочки сертификатов и закрытого ключа в одном зашифрованном файле.

По сути, в файл формата PKCS12 вы «складываете» основной SSL/TLS-сертификат, цепочку сертификатов и закрытый ключ, чтобы их было удобно передать. Каждый элемент важен для создания HTTPS-соединения:

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

  • Цепочка сертификатов — это информация о CA (certificate authority — удостоверяющих центрах), которые участвовали в выпуске вашего сертификата и подтверждают его подлинность.

  • Закрытый ключ — это уникальный набор букв и цифр (ключ), им криптографический алгоритм будет шифровать все данные, которыми ресурс обменивается с пользователем.

Получив PKCS12-файл, наша система сможет открыть HTTPS-соединение. Вам нужно только упаковать связанные с сертификатом файлы в формат PKCS12 в кодировке base64 (эту кодировку понимает система) и загрузить в раздел Управление секретами.

Как создать PKCS12-файл

1. Подготовьте файлы сертификата

Вам понадобятся основной SSL/TLS-сертификат для домена, цепочка сертификатов и закрытый ключ. Для домена должна быть настроена DNS A-запись с виртуальным IP-адресом балансировщика нагрузки (IP указан в разделе Сеть Балансировщики нагрузки). Ваш домен будет направлять запросы на IP балансировщика, а тот распределит их между машинами. 

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

1. Скачайте корневой и промежуточный сертификаты на сайте CA, который выдал вам сертификат.

2. Создайте файл в любом текстовом редакторе.

3. В созданный файл поместите содержимое сертификатов в последовательности: корневой сертификат, затем сертификаты посредников по порядку, в конце сертификат для домена. Вот так: 

  • содержимое корневого сертификата (например, «CARoot.crt»);

  • содержимое сертификата посредника №1 (например, «Intermediate1.crt»);

  • содержимое сертификата посредника №2 (например, «Intermediate2.crt»);

  • содержимое сертификата для домена (например, «domain.crt»).

2. Объедините файлы сертификата в PKCS12

Теперь у вас на руках все нужные файлы. Объединить их в формат PKCS12 можно разными способами. Ниже описываем частый кейс — создание PKCS12 из PEM-файлов:

1. Установите OpenSSL. Это библиотека, содержащая инструменты для работы с SSL/TLS протоколами. Ссылки для установки и инструкции по работе с OpenSSL можно найти на официальном сайте.

2. Проверьте, соответствуют ли ваши файлы сертификата формату PEM. Такие файлы должны иметь расширение .pem, .crt, .cer либо .key, начинаться со строки «----- BEGIN CERTIFICATE -----» и заканчиваться строкой «----- END CERTIFICATE -----». Чтобы увидеть начало и конец файла, откройте его в текстовом редакторе.

3. Если какие-то файлы не в PEM, преобразуйте их с помощью OpenSSL. Введите в OpenSSL нужную команду, указав вместо текста в квадратных скобках свои названия:

Для файла .crt, .cer или .der

openssl x509 -inform der -in [название вашего файла, включая расширение]-out [название для создаваемого PEM-файла].pem

Если ваш файл называется «example.der» и новому PEM-файлу вы хотите дать имя «PEMcertificate», то команда будет такой: openssl x509 -inform der -in example.der -out PEMcertificate.pem

Для файла .p7b или .p7c

openssl pkcs7 -print_certs -in [название вашего файла, включая расширение] -out [название для создаваемого PEM-файла].cer

Если ваш файл называется «example.pb7» и новому PEM-файлу вы хотите дать имя «PEMcertificate», то команда будет такой: openssl pkcs7 -print_certs -in example.pb7 -out PEMcertificate.cer

4. Поместите основной сертификат, ключ и цепочку промежуточных сертификатов (всего три файла в формате PEM) в текущую директорию.

5. Чтобы объединить файлы в PKCS12, откройте OpenSSL и введите команду:

openssl pkcs12 -export -inkey [название файла с закрытым ключом, включая расширение] -in [название файла с сертификатом, включая расширение] -certfile [название файла с цепочкой сертификатов, включая расширение] -passout pass: -out [ваше название для создаваемого файла].p12

Если ваши файлы — «server.crt» (основной сертификат), «server.key» (закрытый ключ) и «ca-chain.crt» (цепочка сертификатов), а новый PKCS12-файл вы хотите назвать «server», то команда будет такой: openssl pkcs12 -export -inkey server.key -in server.crt -certfile ca-chain.crt -passout pass: -out server.p12

В результате вы объедините ключ, сертификат и промежуточную цепочку сертификатов в один файл PKCS12. 

3. Закодируйте результат в base64

Закодируйте содержимое PKCS12-файла в base64. Это можно сделать, введя в консоли нужную команду:

Для ОС Windows 

certutil.exe -encode [полный путь к PKCS12-файлу] [название нового файла].b64

Если путь к вашему файлу — «C:\Users\Myname\server.p12» и вы хотите назвать новый файл «code64», то команда будет такой: certutil.exe -encode C:\Users\Myname\server.p12 code64.b64

Будет создан новый файл в кодировке base64. Откройте его в текстовом редакторе и удалите первую и последнюю строчки: «-----BEGIN CERTIFICATE-----» и «-----END CERTIFICATE-----». Они генерируются автоматически и не нужны вам. Оставшийся текст и будет содержанием секрета.

Для Mac OS

openssl base64 -in [полный путь к PKCS12-файлу] -out [название нового файла].txt

Если путь к вашему файлу — «Users/admin/Downloads/server.p12» и вы хотите назвать новый файл «code64», то команда будет такой: openssl base64 -in Users/admin/Downloads/server.p12 -out code64.txt

Будет создан новый файл .txt с содержанием PKCS12-файла, закодированным в base64. Это и есть содержание секрета.

Для Linux (выполняется в директории, где лежит PKCS-12 файл)

base64 [название PKCS12-файла] > [название нового файла]

Если ваш файл называется «server.p12» и вы хотите назвать новый файл «code64», то команда будет такой: base64 server.p12 > code64

Будет создан новый файл code64 с содержанием PKCS12-файла, закодированным в base64. Это и есть содержание секрета. Файл можно открыть с помощью команды nano code64.

Как создать балансировщик нагрузки с HTTPS-слушателем

1. Добавьте содержимое файла PKCS12 в base64 кодировке в качестве секрета. Для этого перейдите в раздел Управление секретами и нажмите Создать секрет. В появившемся окне задайте имя секрета, активируйте настройку Загрузить как PKCS12 файл, вставьте содержимое секрета в поле «Содержимое» и нажмите Сохранить.

ba4946ccdb3e10030757b7ad478f16a2.png

2. При создании или редактировании балансировщика нагрузки нажмите Добавить слушатель. В открывшемся окне введите имя нового слушателя, выберите протокол Terminated HTTPS, укажите нужный секрет внизу и нажмите Создать слушатель.

846e94712852b3f5e5b8afb0bd6af666.png

3. Слушатель будет создан.

Помогла ли вам статья?