Облако
Загрузить PKCS12-файл для создания HTTPS-слушателя
Управление секретами — это раздел, куда можно загрузить PKCS12-файлы (в системе называются секретами). Они нужны для создания балансировщиков нагрузки с 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
Для файла PBP или 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 файл, вставьте содержимое секрета в поле Содержимое и нажмите Сохранить.
2. При создании или редактировании балансировщика нагрузки нажмите Добавить слушатель. В открывшемся окне введите имя нового слушателя, выберите протокол Terminated HTTPS, укажите нужный порт и выберите созданный ранее секрет. Введите разрешённые CIDR и нажмите Создать слушатель.
3. Слушатель будет создан.