EasyUC for Microsoft Teams
SBC certificate per tenant
Request, issue and renew the Let’s Encrypt certificate for the SBC hostname over DNS-01.
In EasyUC: EasyUC Teams → Teams → Teams Tenants → tenant → Settings → Certificate for this hostname
What it is for
Microsoft accepts a Direct Routing trunk only if the SBC presents a publicly trusted certificate for exactly its hostname. EasyUC orders this certificate from Let’s Encrypt itself and stores it. The private key stays on the server. It is not displayed anywhere and cannot be downloaded.
EasyUC proves ownership of the hostname with the DNS-01 method: Let’s Encrypt requires a specific TXT record in the DNS zone of the domain. Port 80 does not have to be reachable from the Internet for this.
There are two ways. By hand: EasyUC shows the name and value of the TXT record, and you create it at your DNS provider. This works with every provider. Automatically: if credentials for Cloudflare are stored on the SBC page, EasyUC sets the record itself and renews the certificate without intervention.
Prerequisites
- Licence module
teams. Without this module the EasyUC Teams workspace does not appear. - Role EasyUC Teams (
ROLE_APP_TEAMS_WORKSPACE) with the sub-permissions TENANTS (ROLE_APP_TEAMS_TENANTS) to read and TENANTS bearbeiten (ROLE_APP_TEAMS_TENANTS_EDIT) to change. - The tenant exists and its hostname is correct.
- On the SBC page, Contact e-mail and Environment production are set, and Validation is DNS-01.
- You can create a TXT record in the public DNS zone of the domain. For the automatic way: a Cloudflare API token with write access to the zone.
- The EasyUC server reaches Let’s Encrypt over HTTPS and can resolve public DNS names.
Step by step: Get the certificate by hand with a TXT record
Step by step: Automatic issuance and renewal with Cloudflare
Fields and options
| Field / action | Meaning and use |
|---|---|
| Hostname | Name the certificate is issued for. It equals the tenant’s SBC hostname. |
| Certificate | State: issued, valid until …, DNS entry required, being requested, Failed, no order yet or not checked yet. |
| Request certificate / Request a new certificate | Creates a new order at Let’s Encrypt. A still fresh open order is continued instead of replaced. |
| Check and issue now | Checks whether the TXT record is publicly visible and issues the certificate. Appears only while an order is open. |
| Record name / Record type / Value | The three details for the DNS record. The type is always TXT. |
| All in one line | The same record as one line for pasting into a zone file. |
| Fingerprint | Fingerprint of the issued certificate for comparison, for example with a check from outside. |
| Check again (arrow icon) | Reads the certificate state again without ordering anything. |
Check the result and narrow down errors
- Success: the tenant header shows valid until with a date under Certificate. The SBC picks up the certificate itself and restarts the tenant’s SIP profile as soon as no call is running.
- „Der TXT-Eintrag … ist noch nicht sichtbar. Bitte im DNS anlegen; je nach Anbieter dauert es einige Minuten, bis er abrufbar ist.“ Check name and type. Some providers append the zone name themselves; the name must not contain the domain twice.
- „Unter … steht bereits ein TXT-Eintrag, aber noch nicht der erwartete Wert. Meist stammt er aus einem früheren Versuch - bitte den Wert ersetzen und einige Minuten warten.“ Replace the old value.
- „Für Let’s Encrypt fehlt die Kontakt-E-Mail. Bitte sie auf der SBC-Seite eintragen.“ Add the e-mail in the SBC settings.
- „Es liegt keine offene Zertifikatsbestellung vor. Bitte zuerst „Zertifikat anfordern“.“ The order has expired. Request again; the TXT value is then a different one.
- „Der Hostname wurde seit der Bestellung geändert. Bitte das Zertifikat neu anfordern.“ Request again for the new name.
- A notice that the certificate comes from the test environment and is NOT publicly trusted: switch to production on the SBC page and request again.
- “This certificate expires in less than 30 days. Without stored DNS credentials nobody renews it automatically - request it again here in good time.” Repeat the manual procedure or store Cloudflare credentials.
- „In den DNS-Zugangsdaten wurde kein CF_API_TOKEN gefunden. Erwartet wird eine Zeile CF_API_TOKEN=...“ Correct the credentials on the SBC page.
- „Für den DNS-Anbieter „…“ gibt es noch keinen Treiber. Bitte das Zertifikat von Hand anfordern.“ Only Cloudflare works automatically.
- Certificate issued but the trunk stays down: check environment, exact hostname, TLS port and firewall. Continue in the chapter “Teams calls, SIP flow and captures”.