Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1 2 След.
RSS
Установка сертификата Unifi Cloud Key, UniFi Network
 
Привет, у тебя есть какие-нибудь советы, как установить доверенный сертификат на Cloud key? Я сгенерировал CSR, получил сертификат и правильно импортировал его с помощью команды: java -jar lib/ace.jar import_cert certificate.pem certificate_authority.pem. После перезагрузки Cloud key он всё равно использует оригинальный недоверенный сертификат. Томас
 
Я не понимаю, почему установка SSL на этой системе такая сложная. Я посмотрел все видео и прочитал все инструкции, которые смог найти, и у меня просто не получается. Я открыл обращение в поддержку, а мне дали инструкции, которые вообще не касаются cloud key. Я просто в ужасе от того, насколько это всё запутано.
 
О, я однозначно полностью с этим согласен. Я занимаюсь разработкой программного обеспечения (я — архитектор решений) и совсем не ковыряюсь в сетях, но работать с оборудованием Unifi заставляет меня чувствовать себя рок-звездой (чем я, безусловно, не являюсь, но ощущаю себя именно так) из-за того, как просто его использовать. Я столько раз «плясал» с настройками и устранял проблемы на Cisco, что у меня были кошмары, и я безумно рад, что их наконец начали всерьёз конкурировать в корпоративной среде.

Мне удалось запустить полностью рабочую беспроводную сеть с USG и свитчем за пару часов, и всё это меньше чем за тысячу баксов. Я буквально только на прошлых выходных начал знакомиться с оборудованием Unifi и до сих пор не верю, насколько это просто (у нас на работе масштабный проект, и я консультирую по части для серверов приложений, поэтому решил купить устройство домой, чтобы заменить своё Amplifi... Даже не начинайте меня на эту тему — Amplifi меня очень разочаровал, с учётом того, что Ubiquiti — их родительская компания, кажется, они должны лучше разбираться... Но это совсем не так).

При этом этот SSL просто сводит нас с ума — нам нужна надёжная, а главное повторяемая схема. Я бы хотел, чтобы у Unifi была модель расширяемости или архитектура с плагинами. На следующей неделе я подключу своих разработчиков, чтобы они это всё изучили и придумали какое-то удобное приложение с точечным интерфейсом для нашей операционной команды (мы же на Windows/.Net).
 
Я выложил пример того, как должны быть написаны инструкции, и выбрал очень короткий, но полный образец. Многие из инструкций, которые публикуются на этих форумах, — классические примеры того, как не стоит объяснять, как что-то делать. Ты совершенно не понял, что был приведён именно пример. Исходя из твоих прошлых действий, меня это не удивляет.
 
Согласен, было бы очень здорово и удобно иметь такие функции, особенно учитывая, что их не так уж сложно запрограммировать. При этом у оборудования Unifi много мощных возможностей, и стоит оно при этом намного дешевле, чем Cisco и подобные. Иногда графический интерфейс не совсем такой, какой хотелось бы, но с небольшими настройками можно заставить это оборудование делать действительно классные вещи. У меня опыт работы в корпоративной сфере, и я очень привык к тому, чтобы иметь доступ к такому классу техники. Дома я бы не смог себе это позволить по тем ценам, что ставят Cisco и другие, даже на вторичном или сером рынке на eBay. Оборудование Unifi позволяет приблизиться к этому уровню в ценовом диапазоне, который мне по карману, просто требует немного больше ручной настройки с моей стороны.
 
Все еще слишком сложно для таких простых смертных, как мы, пользователи Windows. Я серьезно — заплачу тебе, чтобы ты установил это за меня.
 
Всё это. Большая ошибка Ubiquiti — не добавить эту функцию в графический интерфейс, ведь установка нормального сертификата — это то, что 99,9% пользователей должны сделать, чтобы соответствовать требованиям своей операционной команды.
 
После того как я поковырялся со своей парой cloudkey, пытаясь заставить это работать, я придумал довольно простой скрипт, для запуска которого нужно минимально вмешательство. У меня есть внутренний CA, которым я подписываю свои сертификаты, поэтому могу спокойно использовать короткие имена и IP-адреса в поле Subject Alternate Name, но любой CA, которому доверяет ваш компьютер, тоже подойдет для этого скрипта. Скрипт достаточно самодокументирован, но вкратце:

Скопируйте скрипт на cloudkey и сделайте его исполняемым.  
Создайте CSR (много инструментов это умеют) и подпишите его.  
Скопируйте подписанный сертификат и приватный ключ в формате PEM (Base64) в директорию /root на cloudkey (эта папка по умолчанию для входа под root). Убедитесь, что имена файлов правильные (cloudkey.crt, cloudkey.key).  
Запустите скрипт — он позаботится обо всем остальном, включая создание резервной копии старых ключей на всякий случай.

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

Надеюсь, это поможет...

#!/usr/bin/env bash

###################################################  
# Инструкция по замене самоподписанного сертификата #  
###################################################  
# 1. Сохраните этот скрипт на ваш cloudkey  
# 2. Сделайте скрипт исполняемым:  
#    chmod u+x cloudkeycert.sh  
# 3. Создайте запрос на подпись сертификата (CSR) и приватный ключ,  
#    включая поле Subject Alternate Name (SAN).  
#    Если SAN отсутствует, Chrome будет ругаться.  
#    Есть много инструментов для создания CSR и ключа:  
#    * - XCA (https://sourceforge.net/projects/xca/)  
#    * - Digicert util (https://www.digicert.com/util/)  
#    * - и другие  
# 4. Подпишите CSR.  
# 5. Убедитесь, что подписанный сертификат и ключ в формате PEM (Base64)  
# 6. В домашней директории root (/root) скопируйте подписанные файлы с именами:  
#    * - Сертификат — cloudkey.crt  
#    * - Приватный ключ — cloudkey.key  
# 7. Запустите скрипт. Он сделает резервную копию текущих файлов на всякий случай,  
#    скопирует новые на место и обновит keystore.  
#    Также он остановит/запустит веб-сервер (NGINX) и сервисы Unifi.  
#    Возможно, придется закрыть браузер, так как он не сразу поймет, что сертификат изменился...

# Опции OpenSSL и Keytool взяты из скрипта:  
# /usr/share/initramfs-tools/scripts/ubnt-bottom/configure-sslcert  
# Единственная добавленная опция в keytool — -noprompt, чтобы сразу перезаписать alias unifi без подтверждения пользователя

HOSTCERTDIR=/etc/ssl/private  
HOSTCERTTAR=cert.tar  
HOSTCERTS="cloudkey.crt cloudkey.key unifi.keystore.jks"  
BACKUPDIR="${HOSTCERTDIR}/`/bin/date +%Y%m%d`"  
BACKUPFILE="`/bin/date +%Y%m%d%H%M`-cert.tar"

echo "Останавливаем сервис unifi"  
/usr/sbin/service unifi stop

echo "Останавливаем веб-сервер NGINX"  
/usr/sbin/service nginx stop

cd ${HOSTCERTDIR}

if [ ! -d ${BACKUPDIR} ]; then
       echo "Создаем папку ${BACKUPDIR}"  
       mkdir ${BACKUPDIR}  
fi

if [ ! -f ${HOSTCERTDIR}/${BACKUPFILE} ]; then
       echo "Создаем архив ${BACKUPDIR}/${BACKUPFILE}"  
       /bin/tar -cf ${BACKUPDIR}/${BACKUPFILE} ${HOSTCERTS}  
fi

/bin/cp /root/cloudkey.key ${HOSTCERTDIR}/  
/bin/cp /root/cloudkey.crt ${HOSTCERTDIR}/

/usr/bin/openssl pkcs12 -export -in ${HOSTCERTDIR}/cloudkey.crt -inkey ${HOSTCERTDIR}/cloudkey.key \  
       -out /tmp/keystore.p12 -name unifi -password pass:'' && \  
/usr/bin/keytool -importkeystore -deststorepass aircontrolenterprise \  
       -destkeypass aircontrolenterprise -destkeystore ${HOSTCERTDIR}/unifi.keystore.jks \  
       -srckeystore /tmp/keystore.p12 -srcstoretype PKCS12 -srcstorepass '' -alias unifi -noprompt

cd ${HOSTCERTDIR}  
/bin/tar -cf ${HOSTCERTTAR} ${HOSTCERTS}

echo "Запускаем веб-сервер NGINX"  
/usr/sbin/service nginx start

echo "Запускаем сервис unifi"  
/usr/sbin/service unifi start

echo "Возможно, придется перезапустить браузер, чтобы он заметил обновленный сертификат"
 
Я потратил несколько часов, пытаясь заменить SSL-сертификаты на своём контроллере UniFi, перепробовал разные методы — включая самоподписанные сертификаты и использование java import tool (https://binaryfury.wann.net/2016/01/installing-ssltls-certs-in-unifi-controllers/). В итоге сработало вот это: https://community.spiceworks.com/how_to/128281-use-lets-encrypt-ssl-certs-with-unifi-cloud-key

Заметки и дополнительные шаги:  
1) Мой контроллер запущен на pfSense (https://github.com/gozoinks/unifi-pfsense), который основан на BSD, что добавляет сложности. UniFi устанавливается в /usr/local/UniFi, а файла /etc/default/unifi нет, поэтому я просто удалил старый keystore (предварительно сделав резервную копию!).  
2) Let's Encrypt / certbot установлены на моём Linux-десктопе, поэтому уже были все внешне подписанные сертификаты (cert.pem, chain.pem, fullchain.pem, privkey.pem) в /etc/letsencrypt/live/my.doman/, которые я скопировал на pfSense (scp -P 22 *.* root@192.168.94.1:/usr/local/UniFi/data).  
3) Конвертировал сертификаты в .p12 по шагу 10, части 1 из указанной выше инструкции. [На этапе, когда у тебя есть подписанные сертификаты или .p12, было бы здорово, если Ubiquiti добавит веб-интерфейс для импорта сертификатов.]
4) Установил .p12 в контроллер UniFi по шагу 10, части 2 из той же инструкции (с поправкой путей).  
5) Перезапустил службу unifi (/usr/sbin/service unifi.sh restart).

ОБНОВЛЕНИЕ: на pfSense ACME ставит сертификаты в /conf/acme. Сертификаты автоматически обновляются периодически пакетом ACME, что упрощает установку по моим шагам 3 и 4. Плюс, ACME генерирует wildcard-сертификаты — здорово! Поскольку pfSense базируется на FreeBSD, по умолчанию используется csh shell, но обычный sh тоже работает нормально. Единственное, при редактировании скрипта следите, чтобы пробелы и переносы строк не ломали всё. Например, редактор в GNOME часто добавляет невидимые символы переноса строки в конце строки (= автоматический перенос), из-за чего скрипты, вставленные в nano, могут не работать.

В общем, вот рабочий скрипт для cron’а, который автоматически обновляет keystore UniFi без запроса пароля (подставляйте свои имена сертификатов):

#!/bin/sh  
# Останавливаем службу  
/usr/sbin/service unifi.sh stop  
# Ждём, чтобы служба корректно остановилась  
sleep 5

rm /usr/local/UniFi/data/keystore

# Конвертируем сертификат в формат PKCS #12  
openssl pkcs12 -export -in /conf/acme/mysite.crt -inkey /conf/acme/mysite.key -out /conf/acme/keystore.p12 -name unifi -password pass:''

# Загружаем в java keystore, который понимает UBNT  
keytool -importkeystore -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -destkeystore /usr/local/UniFi/data/keystore -srckeystore /conf/acme/keystore.p12 -srcstoretype PKCS12 -srcstorepass '' -alias unifi -noprompt

sleep 5

# Запускаем службу  
/usr/sbin/service unifi.sh start
 
@UBNT-KM

- Твои инструкции отлично сработали, спасибо! У меня тоже была проблема: мой SSL-сертификат сбрасывался на стандартный каждый раз после перезагрузки или обновления Cloudkey, но теперь всё сохраняется. Ещё раз спасибо!
 
Привет, Scyto! Если ты столкнулся с ошибкой Error Code: DLG_FLAGS_INVALID_CA при установке веб-сертификата и не знаешь, как её решить, то можешь заглянуть сюда: https://geekermag.com/error-code-dlg_flags_invalid_ca/. Информация на этой странице очень полезная — там подробно объяснена ошибка и даны решения для её устранения.
 
Окей, я понял свою ошибку — пропустил один файл, загрузил его после первой перезагрузки. Однако *и это самое важное* — если не загрузить cert.tar, unifi.keystore.jks, cloudkey.key и cloudkey.crt одним заходом, а потом перезагрузить, то CK «починит» старые файлы и перезапишет их. Ошибка была из-за несовпадающих файлов. Теперь всё работает отлично!
 
Я воспользовался внешней статьей по ссылке https://serman.maxdesk.com/user/viewarticle/9014, но получил следующую ошибку с сертификатом: Error Code: DLG_FLAGS_INVALID_CADLG_FLAGS_SEC_CERT_CN_INVALID. Есть идеи?
 
Вот пример конфигурации для публикации ключа с помощью Puppet. Класс «ssl::cert» — это наш собственный класс, который, по сути, копирует сертификат с Puppet fileserver в /opt/ssl/.

class { 'ssl::cert':
 certificates => [ 'your.unifi.fqdn' ],
} ->
exec { 'copy-unifi-key':
 command => '/bin/cp /opt/ssl/your.unifi.fqdn/your.unifi.fqdn.key /etc/ssl/private/cloudkey.key',
 unless  => '/usr/bin/diff /opt/ssl/your.unifi.fqdn/your.unifi.fqdn.key /etc/ssl/private/cloudkey.key',
} ->
exec { 'copy-unifi-crt':
 command => '/bin/cp /opt/ssl/your.unifi.fqdn/your.unifi.fqdn.crt-bundle /etc/ssl/private/cloudkey.crt',
 unless  => '/usr/bin/diff /opt/ssl/your.unifi.fqdn/your.unifi.fqdn.crt-bundle /etc/ssl/private/cloudkey.crt',
} ->
exec { 'create-keystore':
 command => '/usr/bin/openssl pkcs12 -export -inkey /opt/ssl/your.unifi.fqdn/your.unifi.fqdn.key -in /opt/ssl/your.unifi.fqdn/your.unifi.fqdn.crt-bundle -out /tmp/unifi.keystore -name ubnt -password pass:temppass',
 onlyif  => '/usr/bin/test /opt/ssl/your.unifi.fqdn/your.unifi.fqdn.crt-bundle -nt /tmp/unifi.keystore',
 notify  => Exec['import-keystore'],
}

exec { 'import-keystore':
 command     => '/usr/bin/keytool -importkeystore -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -destkeystore /usr/lib/unifi/data/keystore -srckeystore /tmp/unifi.keystore -srcstoretype PKCS12 -srcstorepass temppass -alias ubnt -noprompt',
 refreshonly => true,
 notify      => [ Service['nginx'], Service['unifi'] ],
}

service { 'unifi': }
service { 'nginx': }
 
После двух дней чтения форумов, руководств и статей сообщества мне удалось запустить сертификат CloudKey wildcard. Я сделал небольшой обзор для себя, который буду обновлять, так как сейчас занимаюсь крупным проектом. Туториал доступен по ссылке: https://serman.maxdesk.com/user/viewarticle/9014 Надеюсь, это поможет вам подготовиться к централизованному управлению Wi-Fi и использованию Wildcard SSL-сертификатов. Не стесняйтесь обращаться к нам по адресу hooldus@serman.ee
 
Я понимаю, что это не позволяет тебе «сделать всё самому», но для меня это было огромной помощью и бесплатно, а мне надо лишь, чтобы браузер не ругался на SSL, мне плевать на страховку и прочее... https://community.spiceworks.com/how_to/128281-use-lets-encrypt-ssl-certs-with-unifi-cloud-key Потрясающе!
 
С этим всё становится как-то из серии «круто, наконец-то решили» с продуктами Ubiq в «БОЖЕ МОЙ, Я ТРАВИЛ ВСЮ НЕДЕЛЮ, ПЫТАЯСЬ РАЗОБРАТЬСЯ С КОМАНДАМИ JAVA KEYTOOL». Почему нельзя сделать функцию импорта SSL? Мы даём сертификат и ключ, а вы уже делаете остальное. Как это сделали бы, например, в Aruba или даже в «Mist» wireless, ха-ха.
 
Это^^ Я большой фанат Ubiquity. Но они действительно могли бы сделать меня счастливее, если бы меньше зависели от сообщества и добавили пару базовых функций в продукт. Например, чтобы можно было легко заменить сертификат.
 
На самом деле, нет, причина, почему эта тема всплывает снова и снова, в том, что UBNT пропустила важную функцию в GUI, которая должна была быть с самого первого релиза с поддержкой SSL. Ни один из множества гайдов от сообщества не исправит отсутствие этой функции, плюс эти странные разные реализации в разных продуктах (CK, UniFi, NVR/вебкамеры) делают очень легко запороть хранилище ключей так, что потом приходится начинать всё заново, если только у тебя нет бэкапа. Учить людей, как писать такие инструкции, здесь не поможет. Людям не нужны более сложные руководства, им нужен простой интерфейс для загрузки своего собственного ключа/сертификата (и промежуточных). Моей веб-камере Axis, которой больше 10 лет, такая функция есть, мой iRMC контроллер с 16 мегабайтами EMMC — тоже, а роутер за 30 баксов — без проблем. А вот у этих профессиональных/корпоративных продуктов этого нет. Вздох.
 
Можешь сколько угодно вздыхать, но причина, почему тема о том, как загрузить новый сертификат на CloudKey, постоянно всплывает — в том, что объяснения, как это сделать, написаны плохо, тяжело понять и они полны неоправданных предположений. Цель этого поста — показать формат написания инструкций в стиле CookBook, который ясен, краток и прост для понимания, и не содержит никаких предположений. Советую тебе отстать, это не первый раз, когда ты ведёшь себя неприятно.
Страницы: 1 2 След.
Читают тему (гостей: 1)