Todo app na Veloz tem HTTPS automático. Mas entender como funciona ajuda a evitar erros comuns.
O que a Veloz faz automaticamente
- Certificado SSL provisionado via Let's Encrypt
- Renovação automática antes da expiração
- HTTPS obrigatório — HTTP redireciona para HTTPS
- TLS 1.3 — Protocolo mais recente e seguro
- HSTS — Navegador sempre usa HTTPS após primeira visita
Você não precisa configurar nada. Funciona para domínios .onveloz.com e domínios personalizados.
Domínio personalizado
Ao adicionar um domínio:
veloz domains add meuapp.com.brO SSL é provisionado automaticamente em poucos minutos após o DNS propagar.
Tempo de provisionamento
| Situação | Tempo |
|---|---|
Subdomínio .onveloz.com |
Instantâneo |
| Domínio personalizado (DNS ok) | 1-5 minutos |
| Domínio personalizado (DNS propagando) | Até 48 horas |
Erros comuns
Mixed Content
Seu app carrega recursos HTTP dentro de uma página HTTPS:
<!-- ❌ Bloqueado pelo navegador -->
<img src="http://exemplo.com/foto.jpg" />
<script src="http://cdn.exemplo.com/lib.js"></script>
<!-- ✅ Correto -->
<img src="https://exemplo.com/foto.jpg" />
<script src="https://cdn.exemplo.com/lib.js"></script>Dica: Use URLs relativas ou // (protocol-relative):
<img src="//exemplo.com/foto.jpg" />API HTTP em app HTTPS
Se seu frontend está em HTTPS mas chama uma API em HTTP:
// ❌ Bloqueado — mixed content
fetch("http://api.meuapp.com/users");
// ✅ Correto
fetch("https://api.meuapp.com/users");Use variáveis de ambiente para URLs de API:
const API_URL = process.env.NEXT_PUBLIC_API_URL;
fetch(`${API_URL}/users`);Redirect loop
Se seu app força HTTPS no código, pode entrar em loop porque a Veloz já redireciona:
// ❌ Não faça isso — a Veloz já cuida
if (req.headers["x-forwarded-proto"] !== "https") {
return res.redirect(`https://${req.headers.host}${req.url}`);
}Remova redirecionamentos manuais de HTTP → HTTPS. A Veloz faz isso na camada de rede.
Cookies seguros
Em produção com HTTPS, sempre use cookies seguros:
// Configurar cookies em produção
res.cookie("session", token, {
httpOnly: true, // Não acessível via JavaScript
secure: true, // Apenas HTTPS
sameSite: "lax", // Proteção contra CSRF
maxAge: 86400000, // 24 horas
});No Next.js:
import { cookies } from "next/headers";
const cookieStore = await cookies();
cookieStore.set("session", token, {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite: "lax",
});Headers de segurança
A Veloz adiciona headers básicos, mas você pode reforçar no seu app:
Next.js
// next.config.js
module.exports = {
async headers() {
return [
{
source: "/(.*)",
headers: [
{ key: "X-Frame-Options", value: "DENY" },
{ key: "X-Content-Type-Options", value: "nosniff" },
{ key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
{ key: "Permissions-Policy", value: "camera=(), microphone=()" },
],
},
];
},
};Express/Hono
npm install helmetimport helmet from "helmet";
app.use(helmet());Verificar SSL
Após o deploy, verifique se o SSL está funcionando:
# Verificar certificado
curl -vI https://meuapp.onveloz.com 2>&1 | grep "SSL certificate"
# Testar no browser
# O cadeado 🔒 deve aparecer na barra de endereçoPróximos passos
- Autenticação Segura — Implementar login corretamente
- Proteção de API — Rate limiting e validação
- Segurança — Como a Veloz protege sua infraestrutura