|
|
@@ -0,0 +1,15 @@
|
|
|
+## MODIFIED Requirements
|
|
|
+
|
|
|
+### Requirement: TLS certificate is provisioned via Let's Encrypt
|
|
|
+The trojan role SHALL use certbot to obtain a TLS certificate for the landing server's domain, with automatic renewal. After provisioning or renewal, the certificate and key SHALL be copied to a trojan-owned directory (`/etc/trojan-go/tls/`) so the service user can read them. The certbot deploy-hook SHALL be placed in `/etc/letsencrypt/renewal-hooks/post/` for automatic execution.
|
|
|
+
|
|
|
+#### Scenario: Certificate provisioning
|
|
|
+- **WHEN** the trojan role runs with a configured domain name
|
|
|
+- **THEN** certbot obtains a TLS certificate for that domain
|
|
|
+- **THEN** the certificate and key are copied to `/etc/trojan-go/tls/` owned by the trojan user
|
|
|
+
|
|
|
+#### Scenario: Certificate auto-renewal
|
|
|
+- **WHEN** the certificate is within 30 days of expiry
|
|
|
+- **THEN** certbot renews it automatically via systemd timer or cron
|
|
|
+- **THEN** a deploy-hook in `/etc/letsencrypt/renewal-hooks/post/` copies the renewed certs to `/etc/trojan-go/tls/`
|
|
|
+- **THEN** the Trojan service is reloaded after renewal
|