Назад | Перейти на главную страницу

Как настроить coturn с помощью letsencrypt

Предоставление этой настройки: 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. Предполагая:

  • coturn пользователь: turnserver
  • поворотная группа: turnserver
  • Папка конфигурации letsencrypt: /etc/letsencrypt/
  • доменное имя: example.com
  • Сервис coturn можно перезапустить с помощью этой команды: service coturn restart
  • файл конфигурации coturn: /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
...