Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Как загрузить свой собственный SSL-сертификат на UniFi Protect NVR (2021-05-07), UniFi Protect
 
Я пролил много сил, чтобы получить SSL-сертификат на новом NVR, поэтому решил поделиться этим, чтобы сэкономить другим кучу нервов. Я пробовал кучу разных вариантов, так что надеюсь, что здесь я описал все нужные шаги.

Первое, что стоит знать — старый способ с "keystore" теперь устарел. Ubiquiti упростила процесс, просто положив нужные файлы в одно место. Нужно просто заменить эти файлы, когда нужно. Вот где они лежат:  
/data/unifi-core/config/unifi-core.crt  
/data/unifi-core/config/unifi-core.key

Вам нужно заменить эти два файла на свой сертификат и закрытый ключ соответственно. Чтобы это сделать (через Windows), скачайте три бесплатные утилиты: PuTTY, WinSCP и Notepad++.

Сначала включите SSH-доступ на вашем NVR. Это делается из-под полного административного аккаунта через веб-интерфейс NVR в настройках. Там потребуется задать пароль для доступа — запомните его, он не отобразится вновь (но его потом можно будет поменять), так что сохраните его в менеджере паролей или другим надежным способом.

Дальше откройте PuTTY, введите IP-адрес вашего NVR, дайте сессии название и нажмите Save, чтобы можно было потом легко импортировать в WinSCP. Потом жмите Open и убедитесь, что SSH работает. После этого PuTTY вам почти не понадобится, кроме как для перезагрузки устройства. (При желании можно через PuTTY сделать запрос на подпись сертификата — CSR, но проще воспользоваться онлайн-генератором или сделать это через вашего SSL-выдавателя.)

Если SSL-эмитент не делает CSR за вас, создайте его сами — он должен сгенерировать и ключ. Мне нравится https://csrgenerator.com/, но честно говоря, лучше взять OpenSSL и сделать самому. Размер ключа должен быть RSA 2048. Сохраните ключ как "unifi-core.key" на компьютере и вставьте CSR на сайте вашего SSL-эмитента, где требуется.

Когда все проверки на стороне эмитента пройдены, скачайте сертификат (и, если дали, CA bundle). Обычно дают два файла: в текстовом и PEM-формате. Вам нужен текстовый. Можно проверить, открыв файл в Notepad++. Если вверху есть строка типа "-----BEGIN CERTIFICATE-----", значит вы на правильном пути. Сохраните этот файл как "unifi-core.crt".

Возможно, потребуется объединить сертификат с CA bundle. Попробуйте сначала без этого, если потом проблема появится — вернитесь к этому шагу. Если надо объединять, откройте CA bundle в Notepad++, скопируйте весь текст и вставьте после строки "-----END CERTIFICATE-----" в вашем сертификате. Проверьте, чтобы между сертификатами и в начале/конце файла не было лишних пустых строчек. В интернете полно руководств по объединению сертификатов, так что подробно я здесь не останавливаюсь.

Что меня реально подкосило — неправильный тип кодировки ключа. Откройте и сертификат, и ключ в Notepad++, проверьте в меню Encoding, стоит ли UTF-8. Если нет — измените и перезапишите файл. У меня ключ был в "UTF-8-BOM", и NVR это не понравилось.

Когда у вас есть корректные файлы unifi-core.crt и unifi-core.key, запускайте WinSCP. Импортируйте сохранённую сессию PuTTY, подключитесь к NVR и перейдите в папку "/data/unifi-core/config/". Загрузите ваши файлы, заменяя старые.

Вернитесь в PuTTY и введите команду "reboot". NVR перезагрузится.

Если всё сделали правильно, после загрузки у вас будет валидный сертификат. Закройте все окна браузера или откройте инкогнито/приватное окно и зайдите по имени хоста, которое указали в сертификате (не по IP). Если предупреждений нет — отлично. Если вы видите сообщение, что Центр Сертификации ненадёжен, вернитесь к опциональному шагу с объединением сертификатов и попробуйте снова.

Частая проблема у многих — сертификат всё равно остаётся недействительным. Если посмотреть данные сертификата в браузере, там в поле hostname стоит "unifi.local". Это значит, что NVR что-то не принял в сертификате или ключе и удалил их, создав стандартные заново. Здесь придётся немного повозиться.

Заново загрузите файлы через WinSCP, зайдите в NVR через PuTTY и выполните:  
cd /data/unifi-core/config/

Расширьте окно PuTTY, чтобы видеть полный вывод команд. Проверьте сертификат командой:  
openssl x509 -in unifi-core.crt -text -noout

Пролистайте вывод, убедитесь, что:  
- Signature Algorithm — "sha256WithRSAEncryption"  
- Validity — даты корректны, и текущая дата в пределах "Not Before" и "Not After"  
- Public-Key — "2048 bit"  
- Issuer — всё в порядке  
- Subject — правильный hostname в "CN="

Далее проверьте ключ:  
openssl rsa -in unifi-core.key -check

Главное, что ищем — "RSA key ok" сверху. У меня, кстати, тут вылезла ошибка — именно тогда я понял, что ключ кодирован неправильно.

Если сертификат и ключ выглядят нормально, возможно, они просто не совпадают. Проверьте это с помощью надёжного онлайн-сервиса, например https://www.sslshopper.com/certificate-key-matcher.html (не пользуйтесь сомнительными сайтами). Если они не совпадают — возможно, придётся перевыпустить сертификат или написать в поддержку эмитента.

После всех исправлений не забывайте перезагружать NVR командой "reboot" через PuTTY. Проверяйте сертификат в свежем браузере или инкогнито. Браузеры типа Chrome кэшируют сертификаты, так что лучше полностью закрыть браузер и открыть заново.

Надеюсь, это кому-то поможет, ведь предыдущие инструкции были как попало, и многие папки, которые они указывали, просто не существуют. Не знаю, как долго этот гайд будет актуален, но у меня он сработал на 07.05.2021. Удачи!
 
@jamesdorton Я понимаю, что опоздал на вечеринку, но если ты ещё не заметил, обязательно добавь DNS-запись и в раздел альтернативного имени. Я ещё добавляю IP-адрес, чтобы не получить ошибку сертификата, если зайду на сервер именно так.
 
В итоге перезагружать систему не обязательно, можно просто выполнить команду для перезапуска сервиса: systemctl restart unifi-core
 
Вы уверены, что использовали правильное общее имя? Нужно использовать DNS-имя, которым вы пользуетесь для доступа к UDM, в качестве общего имени.
 
Используя шаги от j0mbie вместе с инструкциями от cgrvadmin, мне удалось создать запрос на сертификат с помощью openssl на моём UDMPro, подписать его через сервер Active Directory Certificate Authority и загрузить подписанный запрос обратно на UDMPro. После перезагрузки вижу, что UDMPro не пересоздавал сертификаты, что было хорошим знаком — значит, я сделал всё правильно. Сейчас получаю ошибку NET::ERR_CERT_COMMON_NAME_INVALID. Я не понимаю, почему, ведь Common Name в сертификате совпадает с именем UDMPro. Что думаете?
 
Я всегда использую командную строку для основной работы. Так я точно избегаю проблем с кодировкой файлов. Вот что я сделал:

Выполните в командной строке UNVR следующую команду:  
- openssl req -new -newkey rsa:2048 -nodes -keyout unifi-core.key -out unifi-core.csr  
- cat unifi-core.csr

Скопируйте и вставьте вывод команды cat на сайт, который выдает ваш сертификат. В моем случае я выбрал «низкозащищенный» сертификат на сайте www.ssls.com и оплатил сразу на 5 лет, чтобы получить максимальную скидку.  

Теперь ждите выдачи сертификата. (У меня он пришел по электронной почте, так что я просто скопировал его и сделал следующее: vim unifi-core.crt — нажать i для вставки — вставить — ESC для выхода из режима вставки — затем ввести :wq, чтобы сохранить файл и выйти).  

Как только получите новый сертификат, загрузите его (и, если есть, CA bundle) на UNVR через:  
- Fugu для Mac  
- WinSCP для Windows  

Дальше в терминале или PuTTY переименуйте файл сертификата:  
- mv {nameofyourcrtfile}.crt unifi-core.crt  

Если у вас есть CA bundle, нужно их объединить:  
- cat unifi-core.crt ca-bundle.crt > unifi-core.crt  

Скопируйте файлы в нужное место:  
- cp unifi-core.crt /data/unifi-core/config/  
- cp unifi-core.key /data/unifi-core/config/  
- reboot  

Надеюсь, эта информация кому-то поможет. Спасибо оригинальному автору — я использовал вашу очень полезную статью как отправную точку.
 
@j0mbie, можешь написать мне в личку? У меня есть несколько вопросов по этому поводу.
Страницы: 1
Читают тему (гостей: 1)