SSL Configuration
SSL Configuration for rConfig V8
Section titled “SSL Configuration for rConfig V8”SSL/TLS encryption is essential for securing rConfig V8 communications, protecting sensitive network device credentials, and ensuring data integrity. This guide covers both Let’s Encrypt (automated, trusted certificates) and self-signed certificates (internal/development environments) across supported operating systems.
Prerequisites
Section titled “Prerequisites”Before configuring SSL, verify:
- Domain configuration: Domain properly configured and resolving to your server
- Apache installed: Apache web server installed and running
- Firewall rules: Ports 80 (HTTP) and 443 (HTTPS) open
- Root access: Sudo or root privileges on the server
- For Let’s Encrypt: Domain must be publicly accessible for certificate validation
Understanding SSL Certificate Options
Section titled “Understanding SSL Certificate Options”Let’s Encrypt Certificates
Section titled “Let’s Encrypt Certificates”Best for: Production environments with public-facing domains
Advantages:
- Free, automated certificate management
- Trusted by all major browsers
- 90-day validity with automated renewal
- Industry-standard security
Requirements:
- Publicly accessible domain
- Valid DNS records
- Port 80 accessible for validation
Self-Signed Certificates
Section titled “Self-Signed Certificates”Best for: Internal networks, development, testing environments
Advantages:
- No external dependencies
- Works in air-gapped environments
- Complete control over certificate properties
- No expiration concerns for long-term internal use
Limitations:
- Browser security warnings (certificate not trusted)
- Not suitable for public-facing production environments
- Users must manually accept certificate
SSL Configuration
Section titled “SSL Configuration”Let’s Encrypt SSL - Rocky Linux/CentOS/RHEL
Section titled “Let’s Encrypt SSL - Rocky Linux/CentOS/RHEL”Step 1: Update system packages
yum -y updateStep 2: Install mod_ssl
yum -y install mod_sslStep 3: Install certbot and dependencies
# Enable EPEL repositoryyum -y install epel-release
# Install required utilitiesyum -y install yum-utils
# Install certbot for Apacheyum -y install certbot python3-certbot-apacheStep 4: Obtain SSL certificate
Stop Apache temporarily to allow certbot to bind to port 80:
systemctl stop httpdRun certbot:
certbot --apacheFollow the interactive prompts:
Which names would you like to activate HTTPS for?-------------------------------------------------------------------------------1: yourdomainname.com2: rconfig.yourdomainname.com-------------------------------------------------------------------------------Select the appropriate numbers separated by commas and/or spaces, or leave inputblank to select all options shown (Enter 'c' to cancel):Press Enter to select all domains, then choose redirect option:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.-------------------------------------------------------------------------------1: No redirect - Make no further changes to the webserver configuration.2: Redirect - Make all requests redirect to secure HTTPS access. Choose this fornew sites, or if you're confident your site works on HTTPS. You can undo thischange by editing your web server's configuration.-------------------------------------------------------------------------------Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2Step 5: Verify Apache configuration
Certbot automatically updates your Apache configuration. Verify the changes:
# Check configuration syntaxhttpd -t
# View SSL virtual host configurationcat /etc/httpd/conf/httpd-le-ssl.confStep 6: Configure automatic renewal
Create a renewal cron job:
crontab -eAdd this line to renew certificates twice daily:
0 */12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload httpd"Step 7: Test renewal process
certbot renew --dry-runExpected output should indicate successful simulation:
Congratulations, all simulated renewals succeededStep 8: Start Apache
systemctl start httpdsystemctl enable httpdStep 9: Verify HTTPS access
curl -I https://your-domain.comLet’s Encrypt SSL - Ubuntu
Section titled “Let’s Encrypt SSL - Ubuntu”Step 1: Update system packages
apt update && apt upgrade -yStep 2: Install certbot
apt install -y certbot python3-certbot-apacheStep 3: Obtain SSL certificate
Stop Apache temporarily:
systemctl stop apache2Run certbot:
certbot --apacheFollow the interactive prompts:
Which names would you like to activate HTTPS for?-------------------------------------------------------------------------------1: yourdomainname.com2: rconfig.yourdomainname.com-------------------------------------------------------------------------------Select the appropriate numbers separated by commas and/or spaces, or leave inputblank to select all options shown (Enter 'c' to cancel):Press Enter to select all domains, then choose redirect option:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.-------------------------------------------------------------------------------1: No redirect - Make no further changes to the webserver configuration.2: Redirect - Make all requests redirect to secure HTTPS access. Choose this fornew sites, or if you're confident your site works on HTTPS. You can undo thischange by editing your web server's configuration.-------------------------------------------------------------------------------Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2Step 4: Verify Apache configuration
# Check configuration syntaxapache2ctl configtest
# View SSL site configurationcat /etc/apache2/sites-available/000-default-le-ssl.confStep 5: Configure automatic renewal
Ubuntu typically configures automatic renewal via systemd timer. Verify:
# Check timer statussystemctl status certbot.timer
# Enable timer if not activesystemctl enable certbot.timersystemctl start certbot.timerStep 6: Test renewal process
certbot renew --dry-runExpected output:
Congratulations, all simulated renewals succeededAlternative: Manual crontab setup
If systemd timer is unavailable:
crontab -eAdd:
0 */12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload apache2"Step 7: Start Apache
systemctl start apache2systemctl enable apache2Step 8: Verify HTTPS access
curl -I https://your-domain.comSelf-Signed SSL - Rocky Linux/CentOS/RHEL
Section titled “Self-Signed SSL - Rocky Linux/CentOS/RHEL”Step 1: Install required packages
yum -y install mod_ssl opensslStep 2: Create SSL directories
mkdir -p /etc/ssl/privatemkdir -p /etc/ssl/certsStep 3: Generate private key
openssl genrsa -out /etc/ssl/private/rconfig.key 2048Step 4: Generate certificate signing request (CSR)
openssl req -new -key /etc/ssl/private/rconfig.key -out /etc/ssl/certs/rconfig.csrYou’ll be prompted for certificate information:
Country Name (2 letter code) [XX]: USState or Province Name (full name) []: CaliforniaLocality Name (eg, city) []: San FranciscoOrganization Name (eg, company) []: Your OrganizationOrganizational Unit Name (eg, section) []: IT DepartmentCommon Name (eg, your server's hostname) []: rconfig.yourdomainname.comEmail Address []: [email protected]Step 5: Generate self-signed certificate
# Valid for 365 days (adjust -days value as needed)openssl x509 -req -days 365 -in /etc/ssl/certs/rconfig.csr \ -signkey /etc/ssl/private/rconfig.key \ -out /etc/ssl/certs/rconfig.crtStep 6: Set proper permissions
chmod 600 /etc/ssl/private/rconfig.keychmod 644 /etc/ssl/certs/rconfig.crtchown root:root /etc/ssl/private/rconfig.keychown root:root /etc/ssl/certs/rconfig.crtStep 7: Create SSL virtual host configuration
vim /etc/httpd/conf.d/rconfig-ssl.confAdd the following configuration:
# HTTPS Virtual Host<VirtualHost *:443> ServerName your-domain.com ServerAlias www.your-domain.com DocumentRoot /var/www/html/rconfig8/current/public
# SSL Configuration SSLEngine on SSLCertificateFile /etc/ssl/certs/rconfig.crt SSLCertificateKeyFile /etc/ssl/private/rconfig.key
# Modern SSL/TLS Configuration SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off SSLSessionTickets off
# Security Headers Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff Header always set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Laravel Application Configuration <Directory /var/www/html/rconfig8/current/public> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory>
# Error and Access Logs ErrorLog /var/log/httpd/rconfig-ssl-error.log CustomLog /var/log/httpd/rconfig-ssl-access.log combined</VirtualHost>
# HTTP to HTTPS Redirect<VirtualHost *:80> ServerName your-domain.com ServerAlias www.your-domain.com Redirect permanent / https://your-domain.com/</VirtualHost>Step 8: Test Apache configuration
httpd -tExpected output:
Syntax OKStep 9: Restart Apache
systemctl restart httpdsystemctl enable httpdStep 10: Configure firewall
firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --reloadStep 11: Verify HTTPS access
curl -Ik https://your-domain.comSelf-Signed SSL - Ubuntu
Section titled “Self-Signed SSL - Ubuntu”Step 1: Install required packages
apt updateapt install -y apache2 opensslStep 2: Enable required Apache modules
a2enmod ssla2enmod headersa2enmod rewriteStep 3: Create SSL directories
mkdir -p /etc/ssl/privatemkdir -p /etc/ssl/certsStep 4: Generate private key
openssl genrsa -out /etc/ssl/private/rconfig.key 2048Step 5: Generate certificate signing request (CSR)
openssl req -new -key /etc/ssl/private/rconfig.key -out /etc/ssl/certs/rconfig.csrYou’ll be prompted for certificate information:
Country Name (2 letter code) [XX]: USState or Province Name (full name) []: CaliforniaLocality Name (eg, city) []: San FranciscoOrganization Name (eg, company) []: Your OrganizationOrganizational Unit Name (eg, section) []: IT DepartmentCommon Name (eg, your server's hostname) []: rconfig.yourdomainname.comEmail Address []: [email protected]Step 6: Generate self-signed certificate
# Valid for 365 days (adjust -days value as needed)openssl x509 -req -days 365 -in /etc/ssl/certs/rconfig.csr \ -signkey /etc/ssl/private/rconfig.key \ -out /etc/ssl/certs/rconfig.crtStep 7: Set proper permissions
chmod 600 /etc/ssl/private/rconfig.keychmod 644 /etc/ssl/certs/rconfig.crtchown root:root /etc/ssl/private/rconfig.keychown root:root /etc/ssl/certs/rconfig.crtStep 8: Create SSL site configuration
vim /etc/apache2/sites-available/rconfig-ssl.confAdd the following configuration:
# HTTPS Virtual Host<VirtualHost *:443> ServerName your-domain.com ServerAlias www.your-domain.com DocumentRoot /var/www/html/rconfig8/current/public
# SSL Configuration SSLEngine on SSLCertificateFile /etc/ssl/certs/rconfig.crt SSLCertificateKeyFile /etc/ssl/private/rconfig.key
# Modern SSL/TLS Configuration SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off SSLSessionTickets off
# Security Headers Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff Header always set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Laravel Application Configuration <Directory /var/www/html/rconfig8/current/public> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory>
# Error and Access Logs ErrorLog ${APACHE_LOG_DIR}/rconfig-ssl-error.log CustomLog ${APACHE_LOG_DIR}/rconfig-ssl-access.log combined</VirtualHost>
# HTTP to HTTPS Redirect<VirtualHost *:80> ServerName your-domain.com ServerAlias www.your-domain.com Redirect permanent / https://your-domain.com/</VirtualHost>Step 9: Test Apache configuration
apache2ctl configtestExpected output:
Syntax OKStep 10: Enable SSL site and disable default
a2ensite rconfig-ssl.confa2dissite 000-default.confStep 11: Restart Apache
systemctl restart apache2systemctl enable apache2Step 12: Configure firewall (if UFW is enabled)
ufw allow 'Apache Full'ufw reloadStep 13: Verify HTTPS access
curl -Ik https://your-domain.comReverse Proxy Configuration
Section titled “Reverse Proxy Configuration”Step 1: Edit environment configuration
vim /var/www/html/rconfig8/current/.envStep 2: Add or modify the following variable
APP_FORCE_HTTPS=trueStep 3: Configure trusted proxy headers (if needed)
If your reverse proxy uses non-standard headers, also configure:
# Add these lines to .envTRUSTED_PROXIES=*# Or specify specific proxy IP addresses:# TRUSTED_PROXIES=10.0.0.1,10.0.0.2Step 4: Save and exit
Press Esc, then type :wq and hit Enter.
Step 5: Clear application cache
php /var/www/html/rconfig8/current/artisan config:clearphp /var/www/html/rconfig8/current/artisan cache:clearphp /var/www/html/rconfig8/current/artisan route:clearphp /var/www/html/rconfig8/current/artisan view:clearStep 6: Verify configuration
# Check if HTTPS is enforcedcurl -I http://your-domain.comYou should see a redirect to HTTPS or the application responding with HTTPS-aware headers.
Verification and Testing
Section titled “Verification and Testing”Basic HTTPS Verification
Section titled “Basic HTTPS Verification”Test HTTPS response:
curl -I https://your-domain.comExpected headers should include:
HTTP/2 200strict-transport-security: max-age=63072000; includeSubDomains; preloadx-frame-options: DENYx-content-type-options: nosniffTest HTTP to HTTPS redirect:
curl -I http://your-domain.comExpected response:
HTTP/1.1 301 Moved PermanentlyLocation: https://your-domain.com/Certificate Validation
Section titled “Certificate Validation”Check certificate details:
openssl s_client -connect your-domain.com:443 -servername your-domain.com | openssl x509 -noout -textVerify certificate expiration:
echo | openssl s_client -servername your-domain.com -connect your-domain.com:443 2>/dev/null | openssl x509 -noout -datesSSL Configuration Testing
Section titled “SSL Configuration Testing”Online SSL testing tools:
- SSL Labs SSL Test - Comprehensive SSL/TLS configuration analysis
- SSL Checker - Quick certificate validation
- Mozilla Observatory - Security headers and best practices
Troubleshooting
Section titled “Troubleshooting”Apache fails to start
Section titled “Apache fails to start”Symptoms:
- Apache service fails to start after SSL configuration
- Error messages in system logs
Diagnosis:
Check Apache configuration syntax:
# Rocky/RHEL/CentOShttpd -t
# Ubuntuapache2ctl configtestCheck Apache error logs:
# Rocky/RHEL/CentOStail -50 /var/log/httpd/error_log
# Ubuntutail -50 /var/log/apache2/error.logCommon Causes:
- Syntax errors in virtual host configuration
- Missing or incorrect SSL certificate paths
- SSL module not loaded
- Port 443 already in use by another process
Resolution:
For syntax errors, review the error message and correct the configuration file:
# Rocky/RHEL/CentOSvim /etc/httpd/conf.d/rconfig-ssl.conf
# Ubuntuvim /etc/apache2/sites-available/rconfig-ssl.confFor missing SSL module:
# Rocky/RHEL/CentOSyum install -y mod_ssl
# Ubuntua2enmod sslCheck if port 443 is in use:
netstat -tlnp | grep :443# orss -tlnp | grep :443Certificate file permission errors
Section titled “Certificate file permission errors”Symptoms:
- Apache logs show “Permission denied” for certificate files
- SSL handshake failures
Diagnosis:
Check current permissions:
ls -la /etc/ssl/private/rconfig.keyls -la /etc/ssl/certs/rconfig.crtResolution:
Set correct permissions and ownership:
chmod 600 /etc/ssl/private/rconfig.keychmod 644 /etc/ssl/certs/rconfig.crtchown root:root /etc/ssl/private/rconfig.keychown root:root /etc/ssl/certs/rconfig.crtRestart Apache:
# Rocky/RHEL/CentOSsystemctl restart httpd
# Ubuntusystemctl restart apache2HTTP to HTTPS redirect not working
Section titled “HTTP to HTTPS redirect not working”Symptoms:
- HTTP requests are not redirected to HTTPS
- Users can access site via HTTP
Diagnosis:
Test redirect manually:
curl -I http://your-domain.comCheck virtual host configuration:
# Rocky/RHEL/CentOShttpd -S
# Ubuntuapache2ctl -SResolution:
Verify HTTP virtual host has redirect directive:
<VirtualHost *:80> ServerName your-domain.com Redirect permanent / https://your-domain.com/</VirtualHost>If using .htaccess, ensure mod_rewrite is enabled:
# Ubuntua2enmod rewritesystemctl restart apache2Firewall blocking HTTPS connections
Section titled “Firewall blocking HTTPS connections”Symptoms:
- HTTPS works locally but not remotely
- Connection timeout when accessing via HTTPS
- Certificate works but clients cannot connect
Diagnosis:
Check if firewall is active:
# Rocky/RHEL/CentOSfirewall-cmd --state
# Ubuntuufw statusTest local vs. remote connectivity:
# Local testcurl -I https://localhost
# Remote test (from another machine)telnet your-domain.com 443Resolution:
Allow HTTPS through firewall:
# Rocky/RHEL/CentOSfirewall-cmd --permanent --add-service=httpsfirewall-cmd --permanent --add-service=httpfirewall-cmd --reload
# Verify rulesfirewall-cmd --list-services# Ubuntuufw allow 80/tcpufw allow 443/tcpufw reload
# Verify rulesufw statusFor cloud environments, also check:
- Security group rules (AWS, Azure, GCP)
- Network ACLs
- Load balancer configuration
SELinux blocking certificate access
Section titled “SELinux blocking certificate access”Symptoms:
- Apache cannot read certificate files despite correct permissions
- SELinux audit logs show denials
- Only occurs on RHEL/CentOS/Rocky systems
Diagnosis:
Check SELinux status:
getenforceCheck for SELinux denials:
ausearch -m avc -ts recent | grep httpdResolution:
Set correct SELinux context for certificate files:
semanage fcontext -a -t httpd_sys_content_t "/etc/ssl/certs/rconfig.crt"semanage fcontext -a -t httpd_sys_content_t "/etc/ssl/private/rconfig.key"restorecon -Rv /etc/ssl/If semanage is not available:
yum install -y policycoreutils-python-utilsAllow Apache to read certificate locations:
setsebool -P httpd_read_user_content 1Restart Apache:
systemctl restart httpdLet’s Encrypt certificate generation fails
Section titled “Let’s Encrypt certificate generation fails”Symptoms:
- Certbot fails with validation errors
- Domain validation cannot complete
- Rate limit errors
Diagnosis:
Check domain accessibility from public internet:
curl -I http://your-domain.comVerify DNS resolution:
nslookup your-domain.comdig your-domain.comCheck certbot logs:
tail -50 /var/log/letsencrypt/letsencrypt.logCommon Causes:
- Domain not publicly accessible (internal network)
- DNS not propagated or misconfigured
- Port 80 blocked by firewall
- Web server not running during validation
- Rate limits exceeded (5 certificates per domain per week)
Resolution:
For DNS issues, verify A record points to correct IP:
dig +short your-domain.comFor firewall issues, temporarily allow port 80:
# Rocky/RHEL/CentOSfirewall-cmd --add-service=httpFor rate limit issues, use staging environment for testing:
certbot --apache --stagingOnce working, obtain production certificate:
certbot --apache --force-renewalSSL certificate warnings in browser
Section titled “SSL certificate warnings in browser”Symptoms:
- Browser shows “Not Secure” or certificate warning
- Certificate error messages
- Users must manually accept certificate
Diagnosis:
Check certificate details in browser (click on padlock icon)
Verify certificate chain:
openssl s_client -connect your-domain.com:443 -servername your-domain.comFor self-signed certificates:
This behavior is expected and normal. Self-signed certificates are not trusted by browsers because they’re not issued by a recognized Certificate Authority.
Solutions:
- Use Let’s Encrypt for production environments
- Add self-signed certificate to browser’s trusted certificates (for development)
- Add certificate to organization’s certificate store (for internal networks)
For Let’s Encrypt certificates:
Common Causes:
- Certificate expired
- Domain name mismatch
- Missing intermediate certificates
- Mixed content (HTTP resources on HTTPS page)
Resolution:
Verify certificate is not expired:
echo | openssl s_client -servername your-domain.com -connect your-domain.com:443 2>/dev/null | openssl x509 -noout -datesCheck certificate matches domain:
echo | openssl s_client -servername your-domain.com -connect your-domain.com:443 2>/dev/null | openssl x509 -noout -subjectRenew expired certificate:
certbot renew --force-renewalSSL renewal issues (Let’s Encrypt)
Section titled “SSL renewal issues (Let’s Encrypt)”Symptoms:
- Certificate not renewing automatically
- Renewal errors in logs
- Certificate expired
Diagnosis:
Test renewal manually:
certbot renew --dry-runCheck crontab:
crontab -l | grep certbotCheck systemd timer (Ubuntu):
systemctl status certbot.timersystemctl list-timers | grep certbotCheck certbot logs:
tail -50 /var/log/letsencrypt/letsencrypt.logResolution:
For missing cron job:
crontab -e# Add: 0 */12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload httpd"For systemd timer issues (Ubuntu):
systemctl enable certbot.timersystemctl start certbot.timerFor renewal failures, check:
- Domain is still publicly accessible
- Port 80 is open
- Web server is running
- No conflicting virtual hosts
Force manual renewal:
certbot renew --force-renewalBest Practices
Section titled “Best Practices”Security
Section titled “Security”Use strong TLS protocols: Disable outdated protocols (SSLv3, TLSv1.0, TLSv1.1) and use only TLS 1.2 and TLS 1.3.
Implement security headers: Configure HTTP security headers (HSTS, X-Frame-Options, CSP) to protect against common attacks.
Regular certificate renewal: Monitor certificate expiration dates. Let’s Encrypt certificates expire every 90 days—automated renewal is essential.
Protect private keys: Set restrictive permissions (600) on private key files. Never commit private keys to version control or share them.
Use strong key lengths: Generate RSA keys with at least 2048 bits. Consider 4096 bits for long-term certificates.
Performance
Section titled “Performance”Enable HTTP/2: Modern browsers support HTTP/2 over TLS, significantly improving page load times for rConfig.
Configure session caching: Use SSL session tickets or session caching to reduce handshake overhead for returning clients.
Optimize cipher suites: Order cipher suites to prefer ECDHE for forward secrecy while maintaining compatibility.
Maintenance
Section titled “Maintenance”Monitor certificate expiration: Set up alerts 30 days before certificate expiration. Test renewal processes regularly.
Review logs periodically: Check Apache SSL error logs for handshake failures or certificate issues.
Document custom configurations: Maintain documentation for any customizations to SSL configuration for future reference.
Test after updates: Verify SSL functionality after system updates or Apache configuration changes.
Organization
Section titled “Organization”Standardize certificate locations: Use consistent paths across all servers (/etc/ssl/private/, /etc/ssl/certs/).
Name certificates clearly: Use descriptive names like rconfig-prod.crt or rconfig-dev.crt to identify purpose.
Backup certificates: Include SSL certificates and private keys in backup procedures. Store securely offline.
Related Documentation
Section titled “Related Documentation”- Authentication Overview - User authentication methods and configuration
- User Management - Creating and managing user accounts
- Role-Based Access Control - Configuring permissions and access levels
- Security Best Practices - General security recommendations for rConfig
- Security Best Practices - Comprehensive security hardening guide
- Firewall Configuration - Configuring firewall rules for rConfig
- Apache Configuration - Web server optimization and tuning
- Reverse Proxy Setup - Configuring nginx or HAProxy in front of Apache
Quick Reference
Section titled “Quick Reference”Certificate File Locations
Section titled “Certificate File Locations”| OS Type | Private Key | Certificate | Apache Config |
|---|---|---|---|
| Rocky/RHEL/CentOS | /etc/ssl/private/rconfig.key | /etc/ssl/certs/rconfig.crt | /etc/httpd/conf.d/ |
| Ubuntu | /etc/ssl/private/rconfig.key | /etc/ssl/certs/rconfig.crt | /etc/apache2/sites-available/ |
Common Commands
Section titled “Common Commands”# Check Apache syntaxhttpd -t
# View virtual hostshttpd -S
# Restart Apachesystemctl restart httpd
# View error logstail -f /var/log/httpd/error_log
# Check certificate expirationopenssl x509 -in /etc/ssl/certs/rconfig.crt -noout -dates
# Test SSL connectionopenssl s_client -connect your-domain.com:443
# Renew Let's Encrypt certificatecertbot renew --force-renewal
# Test certificate renewalcertbot renew --dry-run# Check Apache syntaxapache2ctl configtest
# View virtual hostsapache2ctl -S
# Restart Apachesystemctl restart apache2
# View error logstail -f /var/log/apache2/error.log
# Check certificate expirationopenssl x509 -in /etc/ssl/certs/rconfig.crt -noout -dates
# Test SSL connectionopenssl s_client -connect your-domain.com:443
# Renew Let's Encrypt certificatecertbot renew --force-renewal
# Test certificate renewalcertbot renew --dry-runSSL Configuration Checklist
Section titled “SSL Configuration Checklist”Use this checklist to verify your SSL implementation:
Pre-Installation:
Let’s Encrypt Installation:
Self-Signed Installation:
Post-Installation Verification:
For Reverse Proxy:
Security Verification:
Certificate Renewal Schedule
Section titled “Certificate Renewal Schedule”| Certificate Type | Validity Period | Renewal Frequency | Automation |
|---|---|---|---|
| Let’s Encrypt | 90 days | Every 60 days | Automatic via cron/systemd |
| Self-Signed | User-defined (typically 365 days) | Before expiration | Manual |
| Commercial CA | 1-2 years | 30 days before expiration | Manual or vendor-specific |
Firewall Rules Quick Reference
Section titled “Firewall Rules Quick Reference”# Add HTTP and HTTPS servicesfirewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --reload
# Verify rulesfirewall-cmd --list-services
# Add specific ports (alternative)firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --permanent --add-port=443/tcpfirewall-cmd --reload# Allow HTTP and HTTPSufw allow 80/tcpufw allow 443/tcpufw reload
# Verify rulesufw status
# Allow Apache Full (HTTP + HTTPS)ufw allow 'Apache Full'# Allow HTTPiptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow HTTPSiptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Save rules (method varies by distribution)# Rocky/RHEL/CentOSiptables-save > /etc/sysconfig/iptables
# Ubuntu/Debianiptables-save > /etc/iptables/rules.v4Summary
Section titled “Summary”SSL/TLS encryption is essential for securing rConfig V8 deployments, protecting sensitive network device credentials and configuration data during transmission. This guide covered both Let’s Encrypt certificates for production environments requiring trusted certificates and self-signed certificates for internal or development use.
Key takeaways:
- Let’s Encrypt provides free, automated, and trusted certificates ideal for production environments with public-facing domains
- Self-signed certificates are suitable for internal networks and development but generate browser warnings
- Automatic renewal is critical for Let’s Encrypt certificates, which expire every 90 days
- Security headers enhance protection against common web vulnerabilities and should always be configured
- Reverse proxy environments require additional configuration via the
APP_FORCE_HTTPSenvironment variable - Regular testing of SSL configuration and renewal processes prevents unexpected certificate expiration
Proper SSL implementation ensures that rConfig V8 features requiring HTTPS, such as clipboard operations and API integrations, function correctly while maintaining the security posture required for managing critical network infrastructure.
For environments requiring advanced SSL configuration, enterprise support, or assistance with complex scenarios, consult the Apache SSL documentation or contact rConfig support.