Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Warn against using Let's Encrypt certs for encrypted TURN #11686

Merged
merged 4 commits into from
Jan 17, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/11686.doc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Warn against using a Let's Encrypt certificate for TLS/DTLS TURN server client connections, and suggest using ZeroSSL certificate instead. This bypasses client-side connectivity errors focaused by WebRTC libraries that reject Let's Encrypt certificates. Contibuted by @AndrewFerr.
AndrewFerr marked this conversation as resolved.
Show resolved Hide resolved
14 changes: 14 additions & 0 deletions docs/turn-howto.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,10 @@ This will install and start a systemd service called `coturn`.

# TLS private key file
pkey=/path/to/privkey.pem

# Ensure the configuration lines that disable TLS/DTLS are commented-out or removed
#no-tls
#no-dtls
```

In this case, replace the `turn:` schemes in the `turn_uris` settings below
Expand All @@ -145,6 +149,12 @@ This will install and start a systemd service called `coturn`.
We recommend that you only try to set up TLS/DTLS once you have set up a
basic installation and got it working.

NB: If your TLS certificate was provided by Let's Encrypt, TLS/DTLS will
not work with any Matrix client that uses Chromium's WebRTC library. This
AndrewFerr marked this conversation as resolved.
Show resolved Hide resolved
currently includes Element Android/iOS; see their [respective](https://github.com/vector-im/element-android/issues/1533)
[issues](https://github.com/vector-im/element-ios/issues/2712) for more details.
Consider using a ZeroSSL certificate for your TURN server as a working alternative.

1. Ensure your firewall allows traffic into the TURN server on the ports
you've configured it to listen on (By default: 3478 and 5349 for TURN
traffic (remember to allow both TCP and UDP traffic), and ports 49152-65535
Expand Down Expand Up @@ -250,6 +260,10 @@ Here are a few things to try:
* Check that you have opened your firewall to allow UDP traffic to the UDP
relay ports (49152-65535 by default).

* Try disabling `coturn`'s TLS/DTLS listeners and enable only its (unencrypted)
TCP/UDP listeners. (This will only leave signaling traffic unencrypted;
voice & video WebRTC traffic is always encrypted.)

* Some WebRTC implementations (notably, that of Google Chrome) appear to get
confused by TURN servers which are reachable over IPv6 (this appears to be
an unexpected side-effect of its handling of multiple IP addresses as
Expand Down