Ssl-certificate

Материал из SmartPlayer
Другие языки:

Введение

Использование ssl сертификатов позволяет создать защищенное соединение по протоколу https между участниками взаимодействия при работе с программным обспечением. Данная инструкция описывает, как настроить компоненты платформы SmartPlayer для работы с SSL сертификатами.

  • При покупке облачного сервера - ничего настривать не нужно. Все настроено и работает.
  • При покупки локального сервера - нужно будет выпускать сертификаты, настраивать платформу SmartPlayer. О таком случае и пойдет речь дальше в инструкции.

Центры сертификации

Выделим 2 типа центра сертификации.

  1. Сертификаты выпущенными общепринятым публичным центром сертификации - это сертификаты выпускаем публичными компаниями (такие как GlobalSign, Comodo и т.п.). Выпуск сертификата подписанного таким центром сертификации платная услуга.
  2. Самоподписанные сертификаты - это сертификаты выпускаемые частным(личный) центром сертификации. Частный центр сертификации в компании обычно поддерживает департамент ИТ. Сертификаты выпущенными таким центром можно использовать для разных целей, они бесплатны и могут быть созданы самостоятельно. Крупные компании иногда создают у себя в компании инфраструктуру частного центра сертификации и выпускают сертификаты подписанные им.

Типы сертификатов

Теория о типах сертификатах. Упрощенная классификация SSL включает в себя следующие варианты:

  1. Сертификат с расширенной проверкой: ExtendedSSL (EV SSL). Это самое свежее и, возможно, самое важное развитие технологии SSL с момента ее введения, соблюдающее стандартизированные рекомендации по расширенной проверке. Новые высоконадежные браузеры, такие как Microsoft Internet Explorer 7+, Opera 9.5+, Firefox 3+, Google Chrome, Apple Safari 3.2+ и iPhone Safari 3.0+, распознают сертификаты ExtendedSSL как сертификаты с расширенной проверкой (EV). Для клиентов, которые хотят заявить о высочайшем уровне аутентификации.
  2. Сертификат с проверкой организации OrganizationSSL (OV SSL). GlobalSign выпускает сертификаты с проверкой организации на протяжении 15 лет. Сведения о компаниях, подающих заявки на сертификат OrganizationSSL, тщательно проверяются перед выпуском сертификата.
  3. Сертификат с проверкой домена: DomainSSL (DV SSL). Сертификаты DomainSSL полностью поддерживаются и распознаются браузерами, как и сертификаты OrganizationSSL, но имеют одно преимущество — они выпускаются почти мгновенно и без необходимости присылать документы компании на проверку. Это делает DomainSSL идеальным предложением для организации, которой нужно получить SSL-сертификат срочно, без дополнительных расходов и без усилий по передаче документов компании на проверку.

Цепочки сертификатов

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

  • Корневой сертификат SSL, CA certificate — это электронный документ, которым центры сертификации подписывают SSL-сертификаты при выдаче. Корневой сертификат, часто называемый доверенным корневым сертификатом, находится в центре модели доверия, которая поддерживает SSL / TLS. Каждый браузер содержит корневое хранилище. Некоторые браузеры работают самостоятельно, в то время, как другие используют стороннее хранилище сертификатов. Хранилище корневых сертификатов - это набор предварительно загруженных корневых сертификатов, которые находятся на устройстве. Корневой сертификат бесценен, поскольку браузеры автоматически доверяют сертификату, подписанному с доверенным корневым сертификатом. Доверенные корни принадлежат Центрам Сертификации (например Comodo, Thawte, Geotrust, GlobalSign, Symantec и так далее) - организациям, которые проверяют и выдают сертификаты SSL.
  • Промежуточный сертификат - Центры сертификации не выдают сертификаты SSL конечного пользователя непосредственно от их Корневого сертификата. Это было бы опасно, потому что, при неправильной выдаче или ошибке, Root (Корневой сертификат) был бы отозван и каждый выпущенный сертификат, который был подписан с использованием данного Корневого сертификата, станет сразу же "Недоверенным". Таким образом, чтобы обезопасить себя, CA обычно выдает то, что называется "промежуточным сертификатом". Центр Сертификации подписывает промежуточный сертификат с его закрытым ключом, который делает его "Доверенным". Затем Центр сертификации использует закрытый ключ промежуточного сертификата для подписи сертификатов SSL конечного пользователя. Этот процесс может играть несколько раз, где промежуточный корень подписывает другое промежуточное звено, и затем CA использует это для подписания сертификата.
  • SSL сертификат - уникальный сертификат выданый на доменное имя веб приложения.

Выпуск сертификатов

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

  • "Сертификаты выпущенными общепринятым публичным центром сертификации" - можно найти любой сайт в сети интернет (например reg.ru / firstssl.ru и другие их бесчисленное множество), который занимается выпуском сертификатов от нужного центра сертификации (например: GlobalSign). На каждом сайте есть личный кабинет / инструкции как выпускать сертификаты.
  • "Самоподписанные сертификаты" - обратиться в депортамент ИТ своей компании.
Придерживайтесь следующих рекомендаций от компании SmartPlayer по выпуску сертификатов
Рекомендация Причина рекомендации
Покупайте сертификаты выпущенные "общепринятым публичным центром сертификации" Платформа SmartPlayer является кроссплатформенной, т.е. клиентские приложения работают на всех операционных системах (AndroidOS/WebOS/TizenOS/Windows/Linux/Raspberry Pi и т.п.). Это значит что все операционные системы по умолчанию должны доверять центру сертификации который выпустил сертификаты. Если даже в текущем проекте используется только Android OS, это не значит что отдел закупок через год не купит устройства на TizenOS. Используйте центр сертификации которому доверяют максимум производителей устройств.
Покупайте сертификаты от компании GlobalSign Мировой центр сертификации, данному центру доверяют все производители устройств из всех стран мира. Максимально широкое покрытие устройств от производителей. Компания SmartPlayer использует сертификат от данного центра сертификации. Например Samsung/LG - Южная Корея, BrightSign - Великобритания, Android OS - бесчисленное количество разных производителей и все они доверяют GlobalSign.
Не используйте частные центры сертификации Частным центрам сертификации не доверяет ни одно устройство.Для запуска https придется добавлять сертификат в хранилище сертификатов устройства вручную. А если в проекте устройств будет более 50 ? Это уже становится много рутинной ручной работы.
Платформа SmartPlayer пока не поддерживает загрузку пользовательских сертификатов через личный кабинет SmartPlayer. В дальнейшем будет доработано, но универсального решения не получится для всех операционных систем. Есть ограничения от производителей, например TizenOS не предоставляет API для загрузки сертификатов на 30 мая 2024 года. Не берите на себя лишние риски, используйте сертификаты от публичных центров сертифкации.
Какой типа сертификата выбрать? Используйте DomainSSL (DV SSL). Он самый дешевый и быстро выпускаемый для обеспечения работы по протоколу https.

Настройка платформы SmartPlayer

Для корректной работы https протокола с использованием ssl сертификата(ов) нужно настроить следующие компоненты платформы:

  • серверное приложение и личного кабинета SmartPlayer
  • клиентские приложения SmartPlayer

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

  • Корневой сертификат SSL, CA certificate (для примера в инструкции назовем: rootCA.crt)
  • Промежуточный сертификат (для примера в инструкции назовем: intermediateCA.crt)
  • SSL сертификат (для примера в инструкци назовем: server-sp.crt)
  • SSL привытный ключ (для примера в инструкции назовем: server-sp.key)

Настройка серверного приложения (и личного кабинета) SmartPlayer

Создайте цепочку сертификатов из "промежуточного сертификата" и "ssl сертификата" соединив их в один файл. Есть разные способы, как это сделать:

  1. Открыть любой тестовый редактор и в него вставить вначале содержимое файла "промежуточного сертификата", а дальше без пробелов вставить содержимое "ssl сертификата". Сохранить полученный тестовый документ с разрешением *.crt.
  2. При работе в Linux достаточно выполнить команду: cat intermediateCA.crt server-sp.crt > server-sp-chain.crt

В итоге у нас получился файл server-sp-chain.crt, который содержит в себе оба сертификата. Если файл открыть в специальной программе по работе с сертификатами (https://keystore-explorer.org/), то можно увидеть следующую иерархическую структуру


  1. Загрузите на сервер цепочку сертификатов (server-sp-chain.crt) и приватный ключ (server-sp.key) любым удобным способом. Часто используемые программы для этого:
    1. WinScp - https://winscp.net/eng/
    2. FileZilla - https://filezilla-project.org/
    3. Sftp / scp - обычно поставляются с операционной системой
  2. Найдите путь (если не знаете), куда установлена платформа SmartPlayer на сервере, по умолчанию это "/home/smartplayer/smartplayer"
  3. Переместите файлы server-sp-chain.crt и server-sp.key в папку с сертификатами, по умолчанию это "/home/smartplayer/smartplayer/nginx/ssl". По умолчанию в конфигурации nginx поставляемой компанией SmartPlayer названия для файлов: ssl.crt (цепочка сертификатов) и ssl_private.key (приватный ключ). Используйте эти названия для своих файлов, чтобы не переписывать конфигурационные файлы nginx веб сервера.
  4. Проверьте конфигурацию nginx, что файлы доступны для веб сервера, для этого выполнить команду: docker exec -it smartplayer_web_1 sh внутри контейнера nginx -t вывод должен быть
  5. Перезагрузите конфигурацию nginx, для этого выполните команду: docker exec -it smartplayer_web_1 sh внутри контейнера nginx -s reload
  6. На этом установка сертификата на серверное приложение SmartPlayer закончено. Для проверки открой url личного кабинета или серверное приложения в браузере. Если вы использовали сертификаты от "выпущенными общепринятым публичным центром сертификации", то вы сразу увидите защищенное соединение (зеленый замок слева от адреса). Если вы использовали сертификаты от "cамоподписанные сертификаты", то вы увидите незащищенное соединение в браузере, так как он не доверяет сертификату.
Настройка личного кабинета полностью повторяет шаги описанные в этом разделе. Личный кабинет использует аналогичные пути к сертификатам для открытия https соединения. Доп. настройка не требуется если используются конфигурационные файлы nginx по умолчанию. В закрытых сетях используется решение где личный кабинет и серверное приложения находятся на одном домене, практически в 100% случаев.

Настройка клиентских приложения SmartPlayer

  1. Если вы использовали сертификат от "выпущенными общепринятым публичным центром сертификации" от GlobalSign то добавление сертификатов на конечные устройства не нужно и сразу должно открыться https соединение между клиентским приложением и серверным приложение. Клиентское приложение покажет код регистрации, при первом обращении.
  2. Если вы выпустили сертификат частным центром сертификации, то rootCA.crt нужно добавить на устройство в его хранилище сертификатов. В каждой операционной системе это делает по разному, инструкции можно найти в сети Интернет. После добавление сертификата перезагрузите устройство и соединение https должно открыться.

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

  1. Установка_сертификатов_для_ОС_Android
  2. TizenOS - не поддерживает установку сертификатов выпущенных частным центром сертификации. Нужно использовать центры сертификации из списка SSSP#Поддержка_HTTPS_(сертификаты)

Поиск неисправностей

Trust anchor for certification path not found

Ошибки на Android OS
Операционная система Причина ошибки Исправление ошибки
Android OS Устройство не доверяет центру сертификации, который выпустил сертификат установленный на серверном приложении SmartPlayer Добавить корневой сертификат центра сертификации в пользовательские сертификаты на устройстве. Общая инструкция Установка_сертификатов_для_ОС_Android. Возможно после установки потребуется перезагрузка устройства. Зависит от прошивки устройства.
Android OS Устройство не доверяет центру сертификации, который выпустил сертификат установленный на серверном приложении SmartPlayer, но сертификат установлен в хранилище сертификатов устройства Обновите клиентское приложение до версии v1.70.2 и выше

Ошибка подключения ${адрес сервера} {"type":"TransportError", "description":{"isTrusted":true}}

Ошибки на TizenOS/WebOS/BrightSignOS
Операционная система Причина ошибки Исправление ошибки
WebOS Устройство не доверяет центру сертификации, который выпустил сертификат установленный на серверном приложении SmartPlayer Добавить корневой сертификат центра сертификации в пользовательские сертификаты на устройстве в системном меню WebOS. Возможно после установки потребуется перезагрузка устройства. Зависит от прошивки устройства.
TizenOS Устройство не доверяет центру сертификации, который выпустил сертификат установленный на серверном приложении SmartPlayer Добавить корневой сертификат центра сертификации в пользовательские сертификаты на устройстве нет возможности. Выпускать сертификат центром сертификации, которому доверяет устройство по умолчанию. Нужно использовать центры сертификации из списка SSSP#Поддержка_HTTPS_(сертификаты)
BrightSignOS Устройство не доверяет центру сертификации, который выпустил сертификат установленный на серверном приложении SmartPlayer. Инструкция как импортировать корневой сертификат в устройство (сами не проверяли) https://support.brightsign.biz/hc/en-us/articles/360024205233-How-do-I-display-a-webpage-that-requires-a-client-certificate Открывать под VPN/Proxy, из-под российского IP не открывается.

Bad line при проверки конфигурации nginx

Ошибка возникает когда цепочка сертификатов создана неправильно, на стыке сертификатов. Откройте файл цепочки сертификатов в любом текстовом редакторе (sublim/atom/editor/notepad++ и т.п.) и сделайте переход на следующую строчку, при начале следующего сертификата.
Неправильно

Правильно

Протестировать в тестовой инфраструктуре SmartPlayer

У компании SmartPlayer есть тестовая среда, где вы можете протестировать взаимодействие по https серверного приложения и клиентского приложения SmartPlayer c сертификатами выпущенными частным центром сертификации.

  1. Серверное приложение: https://self-certificate-api.smartplayer.org/
  2. Личный кабинет: https://self-certificate.smartplayer.org/

При открытии url в браузере будет ошибка сертификата. Браузер на вашем компьютере не доверяет частному центру сертификации который выпущен компанией SmartPlayer.

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


Скачиваем и добавляем сертификат https://instructions.hb.ru-msk.vkcs.cloud/rootCA_sp_2024.crt


Добавленный сертификат в хранилище браузера

Добавленный сертификат

Обновить страницу

  1. https://self-certificate.smartplayer.org/
  2. https://self-certificate-api.smartplayer.org/

Серверное приложение

Личный кабинет

Теперь видно, что браузер доверяет нашему сертификату, который подписан частным центром сертификации. если нужно протестировать любое клиентское приложение, запросите сборку его на сервер https://self-certificate-api.smartplayer.org/ для тестирования у менеджера компании.

Выпуск сертификата сотрудниками SmartPlayer

SmartPlayer можем выпустить сертификат для проекта, но для этого требуется участие администратора домена на который будет выпущен сертификат. Для начала выпуска сертификата нужно получить название домена на который нужно выпускать сертификат (например api.smartplayer.org/cms.smartplayer.org).

Выпук сертификата с помощью сотрудника SmartPlayer
Наименование шага Описание действий Отвественные
Купить сертификат GlobalSign на сайте reg.ru Покупка сертификата уровня DomainSSL Сотрудник SmartPlayer
Отправка TXT записи Сотрудник SmartPlayer отправит TXT запись которую нужно будет добавить для домена Сотрудник SmartPlayer
Добавление TXT записи для домена Добавить TXT запись для домена Администратор домена (сотрудник организации)
- - -
Создание цепочки сертификатов Создается цепочка сертификатов для установки на серверном приложении Сотрудник SmartPlayer
Отправка архива с (корневым сертификатов, цепочкой сертификатов, приватным ключом) Отправка архива с данными по сертификату Сотрудник SmartPlayer
  1. Стоимость услуги примерно 3000р (включает покупку сертификата). Постоплата. Стоимость может меняться, уточняйте в отделе продаж.
  2. Сертификат будет действовать - один год с момента выпуска.

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

Пример одного домена для личного кабинета и серверного приложения:

  1. https://develop.smartplayer.org - серверное приложение
  2. https://develop.smartplayer.org/cms/ - личный кабинет

Пример двух доменов для личного кабинета и серверного приложения:

  1. https://api.smartplayer.org - серверное приложение
  2. https://cms.smartplayer.org - личный кабинет

На работу приложений это никак не влияет, можно выбрать любой варинт размещения платформы.