SSL Certificate Management - Web UI Guide
Overview
As of version 2.35.0, EAS Station provides complete SSL certificate management through the web interface. No CLI access required!
Accessing the SSL Certificate Manager
- Log in to your EAS Station web interface
- Navigate to Settings → SSL Certificates in the top navigation menu
- Or directly visit:
https://your-domain.com/admin/certbot
Features
✅ Configuration Tab
Purpose: Configure your SSL certificate settings before obtaining a certificate.
Fields:
- Certbot Enabled: Enable/disable automatic SSL certificate management
- Domain Name: Your fully qualified domain name (e.g.,
eas.example.com) - Email Address: Email for certificate expiration notifications
- Use Staging Server: Toggle between production and staging (for testing)
- Auto-Renewal Enabled: Enable automatic certificate renewal
- Renew Days Before Expiry: How many days before expiration to renew (default: 30)
Actions:
- Save Settings: Apply configuration changes
- Reset: Reload current settings
✅ Certificate Status Tab
This tab provides four main sections:
1. Certificate Status
Purpose: View current SSL certificate information
Features:
- Certificate type (Let's Encrypt, Self-Signed, or None)
- Domain name
- Issuer
- Valid until date
- Days remaining
- Status badge (Valid, Expiring Soon, or Expired)
Actions:
- Check Certificate Status: Refresh certificate information
- Download Certificate: Download the certificate file
2. Obtain SSL Certificate
Purpose: Get a new SSL certificate from Let's Encrypt - directly through the web interface
How it works:
- Click Obtain Certificate Now
- Choose acquisition method:
- Standalone (Recommended): Temporarily stops nginx, obtains cert, restarts nginx
- Nginx Plugin: No downtime, uses nginx plugin
- Webroot: Uses existing web server
- Click Obtain Certificate
- Watch real-time certbot output
- Certificate is automatically installed
Real-time feedback:
- Progress indicator during execution
- Live certbot output in scrollable window
- Success/error messages with actionable guidance
- Post-installation instructions
No CLI required! Everything happens through the web UI.
3. Domain Validation
Purpose: Test if your domain is properly configured for Let's Encrypt
Tests:
- DNS Resolution: Verifies domain resolves to correct IP
- HTTP Accessibility: Checks if port 80 is accessible (required for ACME challenge)
Action:
- Test Domain: Run both tests and see results
4. Certificate Renewal
Purpose: Manage certificate renewal - directly through the web interface
Options:
Dry Run (Safe - No Changes)
- Tests renewal process without making changes
- Safe to run anytime
- Good for testing before actual renewal
Normal Renewal
- Renews certificates that are within 30 days of expiration
- Skips certificates not due for renewal
Force Renewal
- Forces immediate renewal regardless of expiration
- Use with caution due to rate limits
Auto-Renewal Management:
- Check Auto-Renewal Status: View systemd timer status and next run time
- Enable Auto-Renewal: Start the certbot.timer for automatic renewal
- Disable Auto-Renewal: Stop automatic renewal
Real-time feedback:
- Progress indicator during execution
- Live certbot output
- Timer status (enabled/disabled, active/stopped, next run time)
- Success/error messages
No CLI required! All renewal operations through the web UI.
Typical Workflows
First-Time Certificate Setup
- Navigate to Settings → SSL Certificates
- Configure (Configuration tab):
- Enable Certbot
- Enter domain name
- Enter email address
- Leave staging disabled for production
- Save settings
- Test (Certificate Status tab):
- Click "Test Domain"
- Verify both DNS and HTTP tests pass
- Obtain (Certificate Status tab):
- Click "Obtain Certificate Now"
- Choose "Standalone" method
- Click "Obtain Certificate"
- Wait for completion (~1-2 minutes)
- Verify (Certificate Status tab):
- Click "Check Certificate Status"
- Confirm valid certificate is shown
- Enable Auto-Renewal (Certificate Status tab):
- Click "Manage Certificate Renewal"
- Click "Check Auto-Renewal Status"
- Click "Enable Auto-Renewal" if not already enabled
Testing Renewal
- Navigate to Settings → SSL Certificates → Certificate Status tab
- Click Manage Certificate Renewal
- Select Dry Run (Test Only - No Changes) from the dropdown
- Click Execute Renewal
- Watch the output - should show "dry run: renewing cert"
- Verify success message
Forcing Certificate Renewal
- Navigate to Settings → SSL Certificates → Certificate Status tab
- Click Manage Certificate Renewal
- Select Force Renewal (Renew Now) from the dropdown
- Click Execute Renewal
- Watch the certbot output
- Verify success and check certificate status
Checking Auto-Renewal Status
- Navigate to Settings → SSL Certificates → Certificate Status tab
- Click Manage Certificate Renewal
- Click Check Auto-Renewal Status
- View:
- Timer Enabled: Yes/No
- Timer Active: Running/Stopped
- Next Run: Date and time
- Enable or disable as needed
Security Notes
Permissions Required
- SSL certificate operations require
system.configurepermission - Only users with this permission can access the SSL Certificates page
- All operations are logged for audit purposes
Safe Operations
The following operations are safe to run anytime:
- Check Certificate Status
- Test Domain
- Download Certificate
- Dry Run renewal test
Operations to Use Carefully
The following operations should be used with care:
- Obtain Certificate: Only obtain when you need a new certificate
- Force Renewal: Subject to Let's Encrypt rate limits (5 per week)
Rate Limits
Let's Encrypt has production rate limits:
- 50 certificates per registered domain per week
- 5 failed validation attempts per account per hour
Best practices:
- Test with staging mode first
- Use dry run before force renewal
- Don't repeatedly obtain certificates unnecessarily
Troubleshooting
"Domain name is not configured"
Solution: Go to Configuration tab and enter your domain name, then save settings.
"Certbot is not installed on this system"
Solution: Install certbot on your server:
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
"Failed to stop nginx"
Possible causes:
- nginx is not installed
- Insufficient permissions
Solution: Ensure nginx is installed and the web app has sudo privileges for systemctl commands.
"Port 80 is not accessible"
Possible causes:
- Firewall blocking port 80
- Domain not pointing to your server
- Another service using port 80
Solutions:
- Check firewall:
sudo ufw allow 80 - Verify DNS:
nslookup your-domain.com - Check port usage:
sudo lsof -i :80
"Certbot failed" with rate limit error
Cause: Hit Let's Encrypt rate limits
Solutions:
- Wait for rate limit reset (usually 1 hour or 1 week)
- Use staging mode for testing
- Avoid repeatedly requesting certificates
Benefits Over CLI
✅ User-Friendly
- No need to SSH into server
- No need to remember commands
- Visual feedback and progress indicators
✅ Safe
- Clear descriptions of what each operation does
- Dry run testing before making changes
- Automatic error handling and recovery
✅ Convenient
- One-click operations
- Real-time output
- Status monitoring
✅ Accessible
- Works from any device with a web browser
- No terminal access required
- Role-based permissions
Technical Details
How It Works
When you click "Obtain Certificate" or "Execute Renewal":
- Web UI sends POST request to backend
- Backend validates your settings
- Backend constructs appropriate certbot command
- Command is executed with
subprocessmodule - Real-time output is captured and returned
- Results are displayed in the UI
Commands Used
The web UI executes these certbot commands (examples):
Obtain Certificate (Standalone):
sudo systemctl stop nginx
sudo certbot certonly --standalone --non-interactive --agree-tos --email you@example.com -d eas.example.com
sudo systemctl start nginx
Renew (Dry Run):
sudo certbot renew --dry-run
Renew (Force):
sudo certbot renew --force-renewal
Enable Auto-Renewal:
sudo systemctl enable --now certbot.timer
Version History
- v2.35.0: Added full web UI execution for all certbot operations
- v2.33.1: Initial web UI for viewing certificate status (commands only)
- Earlier: CLI-only certificate management
See Also
- HTTPS Setup Guide - Comprehensive HTTPS setup documentation
- System Architecture - How SSL fits into the system
- Security Documentation - Security best practices
This document is served from docs/guides/SSL_WEB_UI_GUIDE.md in the EAS Station installation.