Я пролил много сил, чтобы получить 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 за вас, создайте его сами — он должен сгенерировать и ключ. Мне нравится , но честно говоря, лучше взять 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" сверху. У меня, кстати, тут вылезла ошибка — именно тогда я понял, что ключ кодирован неправильно.
Если сертификат и ключ выглядят нормально, возможно, они просто не совпадают. Проверьте это с помощью надёжного онлайн-сервиса, например (не пользуйтесь сомнительными сайтами). Если они не совпадают — возможно, придётся перевыпустить сертификат или написать в поддержку эмитента.
После всех исправлений не забывайте перезагружать NVR командой "reboot" через PuTTY. Проверяйте сертификат в свежем браузере или инкогнито. Браузеры типа Chrome кэшируют сертификаты, так что лучше полностью закрыть браузер и открыть заново.
Надеюсь, это кому-то поможет, ведь предыдущие инструкции были как попало, и многие папки, которые они указывали, просто не существуют. Не знаю, как долго этот гайд будет актуален, но у меня он сработал на 07.05.2021. Удачи!
Первое, что стоит знать — старый способ с "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 за вас, создайте его сами — он должен сгенерировать и ключ. Мне нравится , но честно говоря, лучше взять 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" сверху. У меня, кстати, тут вылезла ошибка — именно тогда я понял, что ключ кодирован неправильно.
Если сертификат и ключ выглядят нормально, возможно, они просто не совпадают. Проверьте это с помощью надёжного онлайн-сервиса, например (не пользуйтесь сомнительными сайтами). Если они не совпадают — возможно, придётся перевыпустить сертификат или написать в поддержку эмитента.
После всех исправлений не забывайте перезагружать NVR командой "reboot" через PuTTY. Проверяйте сертификат в свежем браузере или инкогнито. Браузеры типа Chrome кэшируют сертификаты, так что лучше полностью закрыть браузер и открыть заново.
Надеюсь, это кому-то поможет, ведь предыдущие инструкции были как попало, и многие папки, которые они указывали, просто не существуют. Не знаю, как долго этот гайд будет актуален, но у меня он сработал на 07.05.2021. Удачи!
