Whitelabel Technical Implementation Guide
Overview
This guide provides technical details for implementing whitelabel domains for publishers using AWS CloudFront and Certificate Manager.
Architecture Components
AWS Services Used
- AWS Certificate Manager (ACM) - SSL/TLS certificate provisioning and management
- AWS CloudFront - Content delivery network and custom domain routing
- Route 53 (optional) - DNS management for validation
Technical Flow
graph TD
A[Publisher Domain Request] --> B[Add Domain to ACM]
B --> C[DNS Validation Records Generated]
C --> D[Publisher Updates DNS]
D --> E[ACM Certificate Issued]
E --> F[Add Domain to CloudFront Distribution]
F --> G[Publisher Updates Final CNAME]
G --> H[Domain Live on Platform]
Implementation Steps
Step 1: Certificate Request in ACM
- Navigate to AWS Certificate Manager
- Region:
us-east-1(required for CloudFront) -
Request a public certificate
-
Add Domain Names
Domain name: publisher-domain.com Additional names: *.publisher-domain.com (if wildcard needed) -
Validation Method
- Select: DNS validation
- This generates CNAME records for domain ownership verification
Step 2: DNS Validation Process
-
Extract Validation Records
aws acm describe-certificate --certificate-arn arn:aws:acm:us-east-1:ACCOUNT:certificate/CERT-ID -
Provide Records to Publisher
Type: CNAME Name: _validation_string.publisher-domain.com Value: _validation_value.acm-validations.aws. TTL: 300 (recommended) -
Monitor Validation Status
- Check ACM console for validation completion
- Typically completes within 24-48 hours
Step 3: CloudFront Distribution Configuration
- Locate Target Distribution
- Identify the CloudFront distribution serving the publisher platform
-
Note the distribution ID
-
Add Custom Domain (CNAME)
aws cloudfront get-distribution-config --id DISTRIBUTION_ID > current-config.json -
Update Distribution Configuration
- Add the new domain to the
Aliasesarray - Associate the ACM certificate ARN
-
Update the distribution
-
Example Configuration Update
{ "Aliases": { "Quantity": 2, "Items": [ "existing-domain.com", "new-publisher-domain.com" ] }, "ViewerCertificate": { "ACMCertificateArn": "arn:aws:acm:us-east-1:ACCOUNT:certificate/CERT-ID", "SSLSupportMethod": "sni-only", "MinimumProtocolVersion": "TLSv1.2_2021" } }
Step 4: Final DNS Configuration
-
Provide CloudFront CNAME to Publisher
Type: CNAME Name: publisher-domain.com Value: d123456789.cloudfront.net TTL: 300 -
Verify Configuration
# Test DNS resolution nslookup publisher-domain.com # Test HTTPS connectivity curl -I https://publisher-domain.com
Automation Scripts
Certificate Request Script
#!/bin/bash
DOMAIN=$1
REGION="us-east-1"
# Request certificate
CERT_ARN=$(aws acm request-certificate \
--domain-name "$DOMAIN" \
--validation-method DNS \
--region $REGION \
--query 'CertificateArn' \
--output text)
echo "Certificate ARN: $CERT_ARN"
# Get validation records
aws acm describe-certificate \
--certificate-arn "$CERT_ARN" \
--region $REGION \
--query 'Certificate.DomainValidationOptions[0].ResourceRecord'
Distribution Update Script
#!/bin/bash
DISTRIBUTION_ID=$1
NEW_DOMAIN=$2
CERT_ARN=$3
# Get current configuration
aws cloudfront get-distribution-config \
--id "$DISTRIBUTION_ID" > current-config.json
# Update configuration (requires manual JSON editing)
# Then update distribution
aws cloudfront update-distribution \
--id "$DISTRIBUTION_ID" \
--distribution-config file://updated-config.json \
--if-match $(jq -r '.ETag' current-config.json)
Monitoring and Troubleshooting
Health Checks
-
Certificate Status
aws acm describe-certificate --certificate-arn CERT_ARN --query 'Certificate.Status' -
Distribution Status
aws cloudfront get-distribution --id DISTRIBUTION_ID --query 'Distribution.Status' -
Domain Resolution
dig publisher-domain.com CNAME nslookup publisher-domain.com
Common Issues
Certificate Validation Fails - Verify DNS records are exactly as provided - Check for existing conflicting DNS records - Ensure TTL is not too high (recommend 300 seconds)
CloudFront Distribution Update Fails
- Verify certificate is in ISSUED status
- Check distribution is in Deployed status before updating
- Ensure certificate is in us-east-1 region
Domain Not Accessible - Verify final CNAME points to correct CloudFront domain - Check CloudFront distribution deployment status - Test with different DNS resolvers
Logging and Monitoring
- CloudFront Access Logs
- Enable logging for the distribution
-
Monitor for 4xx/5xx errors on new domains
-
Certificate Expiration Monitoring
- Set up CloudWatch alarms for certificate expiration
-
ACM auto-renews certificates with DNS validation
-
Performance Monitoring
- Monitor CloudFront metrics for new domains
- Set up alerts for unusual traffic patterns
Security Considerations
Certificate Management
- Use DNS validation (more secure than email validation)
- Certificates are automatically renewed by ACM
- Private keys never leave AWS infrastructure
Access Control
- Limit ACM and CloudFront permissions to authorized personnel
- Use IAM roles with least privilege principle
- Log all certificate and distribution changes
Domain Security
- Verify domain ownership before adding to platform
- Monitor for unauthorized certificate requests
- Implement CAA records for additional security
Best Practices
Certificate Management
- Use wildcard certificates for subdomains when appropriate
- Keep certificate ARNs documented and accessible
- Monitor certificate expiration dates
CloudFront Configuration
- Use appropriate cache behaviors for publisher content
- Configure proper security headers
- Enable compression for better performance
DNS Management
- Use reliable DNS providers with good uptime
- Implement proper TTL values for quick updates
- Document all DNS changes and configurations
Rollback Procedures
Emergency Domain Removal
-
Remove from CloudFront Distribution
# Update distribution to remove the domain from aliases aws cloudfront update-distribution --id DISTRIBUTION_ID --distribution-config file://rollback-config.json -
Certificate Cleanup
# Delete certificate if no longer needed aws acm delete-certificate --certificate-arn CERT_ARN
Partial Rollback
- Remove domain from CloudFront but keep certificate for future use
- Update DNS to point away from CloudFront temporarily
Contact and Escalation
Internal Contacts
- DevOps Team: [Contact details]
- Security Team: [Contact details]
- Network Operations: [Contact details]
AWS Support
- Use AWS Support for certificate or CloudFront issues
- Escalate through appropriate support channels
- Document all AWS support cases
Last updated: [Date to be added] Version: 1.0