Implantação TLS para Studio
OpenADS Studio hoje escuta em HTTP texto puro
(openads_serverd --http-port N). O protocolo wire tem seu
próprio URI tls:// para TLS lado-cliente (M12.12, mbedtls
3.6 LTS empacotado), mas o console HTTP embutido usa
cpp-httplib, que só suporta TLS via OpenSSL — não
empacotado para manter o binário enxuto.
Para servir Studio sobre HTTPS em produção, termine TLS na
frente do daemon. Três opções comprovadas; todas deixam
openads_serverd escutando em 127.0.0.1 — só o proxy é
acessível da rede.
Opção 1 — Caddy (recomendada)
Caddy auto-provisiona certificado Let’s Encrypt, redireciona HTTP → HTTPS, define TLS seguro, recarrega ao mudar config. Caddyfile:
studio.meudominio.com {
reverse_proxy 127.0.0.1:6263
}
sudo apt-get install caddy
sudo nano /etc/caddy/Caddyfile # cole o snippet
sudo systemctl reload caddy
Studio acessível em https://studio.meudominio.com/.
Cert renovado automaticamente; Caddy faz OCSP stapling.
Opção 2 — nginx
server {
listen 443 ssl http2;
server_name studio.meudominio.com;
ssl_certificate /etc/letsencrypt/live/studio.meudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/studio.meudominio.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:6263;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
server {
listen 80;
server_name studio.meudominio.com;
return 301 https://$server_name$request_uri;
}
Combine com certbot --nginx -d studio.meudominio.com para
cert Let’s Encrypt.
Opção 3 — stunnel (só terminação TLS)
Superfície menor que HTTP proxies completos — stunnel só envolve o socket texto-puro em TLS.
# /etc/stunnel/openads.conf
[studio]
accept = 0.0.0.0:443
connect = 127.0.0.1:6263
cert = /etc/stunnel/openads-fullchain.pem
key = /etc/stunnel/openads-key.pem
sudo apt-get install stunnel4
sudo systemctl enable --now stunnel4
Opção 4 — Túnel SSH (zero-config, single user)
Quando só um admin precisa do Studio e já existe login SSH:
ssh -L 6263:localhost:6263 user@servidor.meudominio.com
# abrir http://localhost:6263 no navegador
SSH criptografa todo o tráfego HTTP; o daemon continua
escutando em 127.0.0.1:6263 dentro do host remoto.
Postura recomendada
+--------+ HTTPS +-------+ HTTP texto puro +-----------------+
| Browser| ---------------→ | Caddy | -----------------→ | openads_serverd |
+--------+ TLS público +-------+ 127.0.0.1:6263 +-----------------+
↑ ↓
Let's Encrypt data dir
Flags do daemon:
openads_serverd \
--port 6262 \
--http-port 6263 \
--data /srv/openads/data \
--http-user admin:senha-forte
Combine TLS do proxy com --http-user — mesmo se o TLS
terminator fosse comprometido, as credenciais ainda seriam
exigidas para qualquer chamada API.
HTTPS nativo no serverd
Uma opção CMake OPENADS_WITH_OPENSSL=ON está no roadmap.
Linkaria backend OpenSSL do cpp-httplib, aceitaria flags
--tls-cert <pem> --tls-key <pem>, e serverd serviria
HTTPS sem proxy. Estado: planejado para milestone futuro
studio.web.x; enquanto isso, termine TLS num proxy.