Предоставление этой настройки: Nginx предоставляет хорошо известную папку, прослушивающую порт 80/443 на сервере, для обмена chellange на Letsencrypt. Сертификат создан правильно и может использоваться, например, в упомянутом Nginx.
При попытке использовать сертификат по очереди:
listening-port=3478
tls-listening-port=5349
alt-listening-port=3479
alt-tls-listening-port=5350
…
cert=/path/to/fullchain.pem
pkey=/path/to/privkey.pem
Когда теперь пытаетесь запустить coturn, похоже, что он не находит / не может загрузить сертификаты из журналов:
WARNING: cannot start TLS and DTLS listeners because private key file is not set properly
WARNING: cannot find private key file: /path/to/privkey.pem
WARNING: cannot start TLS and DTLS listeners because certificate file is not set properly
WARNING: cannot find certificate file: /path/to/fullchain.pem
Теперь мне интересно, как правильно настроить coturn с использованием SSL-цепочки letsencrypt.
Спасибо за вопрос. Letsencrypt поддерживает крючки после развертывания. Я использовал его со следующим.
Я использую Debian 10 buster с coturn 4.5.1.1-1.1 и letsencrypt certbot 0.31.0. Предполагая:
turnserver
turnserver
/etc/letsencrypt/
example.com
service coturn restart
/etc/turnserver.conf
Если ваша конфигурация отличается от приведенных выше предположений, внесите соответствующие изменения.
mkdir -p /etc/coturn/certs
chown -R turnserver:turnserver /etc/coturn/
chmod -R 700 /etc/coturn/
nano /etc/letsencrypt/renewal-hooks/deploy/coturn-certbot-deploy.sh
chmod 700 /etc/letsencrypt/renewal-hooks/deploy/coturn-certbot-deploy.sh
Адаптированный coturn-certbot-deploy.sh для coturn из примера связанной страницы letsencrypt:
#!/bin/sh
set -e
for domain in $RENEWED_DOMAINS; do
case $domain in
example.com)
daemon_cert_root=/etc/coturn/certs
# Make sure the certificate and private key files are
# never world readable, even just for an instant while
# we're copying them into daemon_cert_root.
umask 077
cp "$RENEWED_LINEAGE/fullchain.pem" "$daemon_cert_root/$domain.cert"
cp "$RENEWED_LINEAGE/privkey.pem" "$daemon_cert_root/$domain.key"
# Apply the proper file ownership and permissions for
# the daemon to read its certificate and key.
chown turnserver "$daemon_cert_root/$domain.cert" \
"$daemon_cert_root/$domain.key"
chmod 400 "$daemon_cert_root/$domain.cert" \
"$daemon_cert_root/$domain.key"
service coturn restart >/dev/null
;;
esac
done
Вам нужно изменить example.com
на ваше доменное имя в указанном выше файле.
Отредактируйте расположение файлов сертификатов в файле конфигурации coturn:
nano /etc/turnserver.conf
С этими строками для example.com
домен:
...
cert=/etc/coturn/certs/example.com.cert
...
pkey=/etc/coturn/certs/example.com.key
...
Я смог протестировать обновление с помощью этой команды для всех сертификатов:
certbot renew --force-renewal
Или эта команда только для данного домена:
certbot certonly --force-renewal -d example.com
В моих журналах coturn больше не отображаются следующие строки:
0: WARNING: cannot find certificate file: /etc/letsencrypt/live/example.com/fullchain.pem (1)
0: WARNING: cannot start TLS and DTLS listeners because certificate file is not set properly
0: WARNING: cannot find private key file: /etc/letsencrypt/live/example.com/privkey.pem (1)
0: WARNING: cannot start TLS and DTLS listeners because private key file is not set properly
Вместо этого я получаю следующие приятные:
...
0: ...: Certificate file found: /etc/coturn/certs/example.com.cert
0: ...: Private key file found: /etc/coturn/certs/example.com.key
...