- Cloudflare account with avow-protocol.org domain
- GitHub repository: hyperpolymath/avow-protocol
- Cloudflare API credentials
-
Import DNS zone file:
# Review the zone file cat cloudflare-dns-zone.txt # Apply via Cloudflare Dashboard or API
-
Update placeholder values:
- Replace
192.0.2.1with actual origin IP - Replace
2001:db8::1with actual IPv6 - Update
tunnel-idwith your Cloudflare Tunnel ID - Update SSHFP fingerprints with actual SSH keys
- Update TLSA records with actual certificate hashes
- Replace
-
In GitHub repository settings:
- Enable GitHub Pages from
mainbranch - Set custom domain:
avow-protocol.org - Wait for GitHub verification
- Enable GitHub Pages from
-
Add GitHub verification TXT record:
github-pages-challenge-hyperpolymath=avow-protocol-verification
Alternative to GitHub Pages for better integration:
-
Connect repository to Cloudflare Pages:
- Build command:
deno task build - Output directory:
.(root) - Environment variables: None required
- Build command:
-
Configure custom domain:
- Add
avow-protocol.orgas custom domain - Enable automatic HTTPS
- Add
Add security headers via Cloudflare Transform Rules:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=(), camera=()For internal services (dashboard.internal, ci.internal, db.internal):
-
Create Cloudflare Tunnel:
cloudflared tunnel create avow-protocol
-
Configure tunnel routes:
# config.yml tunnel: <tunnel-id> credentials-file: /path/to/credentials.json ingress: - hostname: dashboard.internal.avow-protocol.org service: http://localhost:3000 - hostname: ci.internal.avow-protocol.org service: http://localhost:8080 - hostname: db.internal.avow-protocol.org service: tcp://localhost:5432 - service: http_status:404
-
Set up Cloudflare Access:
- Create Access policy for internal subdomains
- Configure authentication (SAML, GitHub OAuth, etc.)
- Enforce MFA
Configure Web Application Firewall rules:
-
Rate limiting:
- API endpoints: 100 requests/minute per IP
- General pages: 1000 requests/minute per IP
-
Custom rules:
- Block known bad user agents
- Require valid Referer for POST requests
- Block requests with suspicious patterns
Deploy WASM-based request filtering:
-
Create Workers script:
// wasm-proxy.js export default { async fetch(request, env) { // Load AVOW verification WASM module const wasmModule = await WebAssembly.instantiate(env.AVOW_WASM); // Validate request using WASM const isValid = await wasmModule.exports.validateRequest(request); if (!isValid) { return new Response('Invalid request', { status: 403 }); } return await fetch(request); } };
-
Deploy Worker:
wrangler deploy
-
Configure route:
- Route:
wasm.avow-protocol.org/* - Worker:
avow-wasm-proxy
- Route:
Cloudflare automatically supports post-quantum key exchange (Kyber) for TLS 1.3.
Verify configuration:
curl -I --tlsv1.3 https://avow-protocol.orgLook for: CF-QUIC and Alt-Svc: h3=":443" headers
- Enable Cloudflare Analytics
- Set up alerts for:
- High error rates (4xx, 5xx)
- DDoS attacks
- Certificate expiration
- DNS changes
Test all security configurations:
# Test HTTPS redirect
curl -I http://avow-protocol.org
# Test security headers
curl -I https://avow-protocol.org
# Test DNSSEC
dig +dnssec avow-protocol.org
# Test CAA records
dig CAA avow-protocol.org
# Test TLSA records
dig TLSA _443._tcp.avow-protocol.org
# Test MTA-STS
dig TXT _mta-sts.avow-protocol.org- Update DNS zone serial on changes:
YYYYMMDDNNformat - Rotate TLSA records 30 days before certificate renewal
- Review WAF rules quarterly
- Update security requirements as standards evolve
See security-requirements.scm for detailed cryptographic requirements including:
- Dilithium5-AES signatures
- Kyber-1024 key exchange
- SHAKE3-512 hashing
- XChaCha20-Poly1305 encryption
- Idris2 formal verification