В административной панели на странице добавления/редактирования стримера необходимо указать:
На сервере стримера в конфиг streamer.conf (путь по умолчанию /data/cctv/etc/streamer.conf) необходимо перед последней фигурной скобкой } добавить строки:
https: {
ca_file: "<путь к файлу сертификата Certification authority>",
dh_file: "<путь к файлу dh1024.pem>",
cert_file: "<путь к файлу сертификата сервера>",
key_file: "<путь к файлу приватного ключа сервера>",
},
Команды для получения сертификата от Let's Encrypt
для стримера:
apt install certbot
certbot certonly --standalone --email EMAIL -d DOMAIN --key-type rsa
При использовании сертификата, созданного с помощью сервиса Let's Encrypt, <путь к файлу сертификата Certification authority>
соответствует файлу chain.pem:
https: {
ca_file: "/etc/letsencrypt/live/WEB_DOMAIN/chain.pem",
dh_file: "/data/cctv/etc/dh1024.pem",
cert_file: "/etc/letsencrypt/live/WEB_DOMAIN/cert.pem",
key_file: "/etc/letsencrypt/live/WEB_DOMAIN/privkey.pem",
},
Файл dh1024.pem создается с помощью команды:
openssl dhparam -out /data/cctv/etc/dh1024.pem 1024
Все файлы сертификата должны быть доступны пользователю cctv
, от имени которого запущен процесс cctv-streamer
. Проверить доступность файлов можно с помощью команды:
sudo -u cctv ls путь_к_файлу
Разрешить доступ к файлам сертификата можно, выполнив команды:
chmod -R 755 /etc/letsencrypt/live
chmod -R 755 /etc/letsencrypt/archive
Если у процесса стримера cctv-streamer не будет достаточных прав на доступ к файлам сертификата, в логе стримера streamer.err.log при запуске стримера появится ошибка: EXCEPTION:load_verify_file: Permission denied
После внесения изменений в конфиг streamer.conf необходимо перезапустить мастер и стример:
service cctv-master restart
service cctv-streamer restart
Для автоматического обновления SSL-сертификата необходимо в файл /etc/cron.d/certbot
для команды certbot -q renew
добавить параметр --renew-hook
:
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew --renew-hook "service cctv-streamer restart"
Чтобы проверить, что текущий SSL-сертификат, который используется стримером, является валидным (не просрочен и пр.), необходимо в браузере Yandex Browser
или Google Chrome
открыть ссылку вида https://ДОМЕННОЕ_ИМЯ_СТРИМЕРА:ПОРТ_HTTPS_СТРИМЕРА/crossdomain.xml
. В случае корректной работы HTTPS на странице должен отобразиться текст как на скриншоте.
ДОМЕННОЕ_ИМЯ_СТРИМЕРА
и ПОРТ_HTTPS_СТРИМЕРА
можно посмотреть через административную панель на странице редактирования стримера:
Для обновления сертификата необходимо на сервере стримера обновить файлы SSL-сертификата, после чего выполнить перезапуск процесса стримера командой:
service cctv-streamer restart
В случае некорректной работы HTTPS возможная причина проблемы может быть указана в лог файле /data/cctv/log/streamer.err.log
Для настройки веб-портала на работу по HTTPS необходимо:
RewriteEngine
. Пример настроек VirtualHost:
<VirtualHost *:80>
DocumentRoot /var/www/cctv-portal
<Directory /var/www/cctv-portal>
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} !^/api/settings
RewriteCond %{REQUEST_URI} !^/event/
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [L]
</VirtualHost>
VirtualHost
, который использует SSL-сертификат, полученный от Let's Encrypt
для домена WEB_DOMAIN
:<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /var/www/cctv-portal
<Directory /var/www/cctv-portal>
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName WEB_DOMAIN
SSLCertificateFile /etc/letsencrypt/live/WEB_DOMAIN/fullchain.pem
SSLCertificateChainFile /etc/letsencrypt/live/WEB_DOMAIN/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/WEB_DOMAIN/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Команды для получения сертификата от Let's Encrypt
для веб-портала:
apt-get install certbot python-certbot-apache
certbot -d WEB_DOMAIN --key-type rsa --apache
В случае ошибки Unable to locate package python-certbot-apache выполнить команды:
apt-get install certbot python3-certbot-apache
certbot -d WEB_DOMAIN --key-type rsa --apache
/var/www/cctv-portal/protected/config/local.php
в секцию params
добавить параметры, заменив WEB_DOMAIN
:'APIHost' => 'https://WEB_DOMAIN',
'RequireLoginOverHTTPS' => true,
'UseHTTPSForTranslations' => true,
'UseHTTPSForAllTranslations' => true,
В случае, если при попытке входа в Android приложение Форпост, возникает ошибка java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
, необходимо на сервере, на котором установлен веб-портал Форпост, выполнить следующие действия:
VirtualHost
, соответствующий подключениям к веб-порталу Форпост по протоколу HTTPSVirtualHost
после строки с параметром SSLCertificateFile
добавить строку с параметром SSLCertificateChainFile
SSLCertificateChainFile
должен указывать на файл, в котором хранится цепочка SSL сертификатов, использованных для подписи SSL сертификата домена веб-портала