Я заметил несколько вариантов и вопросов по поводу установки сертификата Let’s Encrypt или другого кастомного HTTP-сертификата для Контроллера. Использовать прокси перед unifi на самом деле не нужно, так как можно просто взять сертификат и импортировать его в unifi. Существует несколько способов сгенерировать сертификат (в примере ниже предполагается использование Let’s Encrypt), но общий порядок действий таков:
- Сгенерировать сертификат (например, с помощью letsencrypt-auto)
- Преобразовать сертификат и приватный ключ в формат pkcs12
- Преобразовать pkcs12-файл в хранилище java keystore
- Скопировать java keystore в нужное место для unifi
- Перезапустить unifi
Я использую два cron-задания: одно для генерации сертификата через letsencrypt (шаг 1), второе — для конвертации и импорта в unifi (шаги 2-5). Ниже приведён bash-скрипт (протестирован на Ubuntu) для шагов 2-5 (не забудьте заменить "unifi.mydomain.com" на ваш домен/сертификат):
#!/bin/bash
PATH=’/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games’;
openssl pkcs12 -export -in /etc/letsencrypt/live/unifi.mydomain.com/fullchain.pem -inkey /etc/letsencrypt/live/unifi.mydomain.com/privkey.pem -out /etc/letsencrypt/live/unifi.mydomain.com/cert_and_key.p12 -name tomcat -CAfile /etc/letsencrypt/live/unifi.mydomain.com/chain.pem -caname root -password pass:aaa;
rm -f /etc/letsencrypt/live/unifi.mydomain.com/keystore;
keytool -importkeystore -srcstorepass aaa -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -srckeystore /etc/letsencrypt/live/unifi.mydomain.com/cert_and_key.p12 -srcstoretype PKCS12 -alias tomcat -keystore /etc/letsencrypt/live/unifi.mydomain.com/keystore;
keytool -import -trustcacerts -alias unifi -deststorepass aircontrolenterprise -file /etc/letsencrypt/live/unifi.mydomain.com/chain.pem -noprompt -keystore /etc/letsencrypt/live/unifi.mydomain.com/keystore;
mv /var/lib/unifi/keystore /var/lib/unifi/keystore-`date -I`;
cp /etc/letsencrypt/live/unifi.mydomain.com/keystore /var/lib/unifi/keystore;
service unifi restart;
Важно: не меняйте alias и пароли, указанные выше — именно такие ожидает unifi. Это значит, что ваш будет использовать указанный сертификат вместо самоподписанного по умолчанию — прокси не нужен. Надеюсь, это поможет кому-то автоматизировать процесс.
- Сгенерировать сертификат (например, с помощью letsencrypt-auto)
- Преобразовать сертификат и приватный ключ в формат pkcs12
- Преобразовать pkcs12-файл в хранилище java keystore
- Скопировать java keystore в нужное место для unifi
- Перезапустить unifi
Я использую два cron-задания: одно для генерации сертификата через letsencrypt (шаг 1), второе — для конвертации и импорта в unifi (шаги 2-5). Ниже приведён bash-скрипт (протестирован на Ubuntu) для шагов 2-5 (не забудьте заменить "unifi.mydomain.com" на ваш домен/сертификат):
#!/bin/bash
PATH=’/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games’;
openssl pkcs12 -export -in /etc/letsencrypt/live/unifi.mydomain.com/fullchain.pem -inkey /etc/letsencrypt/live/unifi.mydomain.com/privkey.pem -out /etc/letsencrypt/live/unifi.mydomain.com/cert_and_key.p12 -name tomcat -CAfile /etc/letsencrypt/live/unifi.mydomain.com/chain.pem -caname root -password pass:aaa;
rm -f /etc/letsencrypt/live/unifi.mydomain.com/keystore;
keytool -importkeystore -srcstorepass aaa -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -srckeystore /etc/letsencrypt/live/unifi.mydomain.com/cert_and_key.p12 -srcstoretype PKCS12 -alias tomcat -keystore /etc/letsencrypt/live/unifi.mydomain.com/keystore;
keytool -import -trustcacerts -alias unifi -deststorepass aircontrolenterprise -file /etc/letsencrypt/live/unifi.mydomain.com/chain.pem -noprompt -keystore /etc/letsencrypt/live/unifi.mydomain.com/keystore;
mv /var/lib/unifi/keystore /var/lib/unifi/keystore-`date -I`;
cp /etc/letsencrypt/live/unifi.mydomain.com/keystore /var/lib/unifi/keystore;
service unifi restart;
Важно: не меняйте alias и пароли, указанные выше — именно такие ожидает unifi. Это значит, что ваш будет использовать указанный сертификат вместо самоподписанного по умолчанию — прокси не нужен. Надеюсь, это поможет кому-то автоматизировать процесс.
