Debian Apache SSL证书配置指南
一 准备与前提
- 准备一个已解析到服务器公网 IP 的域名,建议同时添加 A 记录:yourdomain.com 与 www.yourdomain.com。
- 安装 Apache 并启用 SSL 模块:sudo apt update && sudo apt install apache2 && sudo a2enmod ssl。
- 如启用防火墙(如 ufw),放行 HTTPS:sudo ufw allow ‘Apache Full’(或 ufw allow 443/tcp)。
- 确保虚拟主机配置中存在正确的 ServerName yourdomain.com,以便自动化工具识别站点。
二 获取并安装证书
- 推荐方式:使用 Let’s Encrypt 与 Certbot 自动获取并配置。
- 安装客户端:sudo apt install certbot python3-certbot-apache。
- 获取并安装证书(同时覆盖 www 子域):sudo certbot --apache -d yourdomain.com -d www.yourdomain.com。
- 在交互中选择是否将 HTTP 重定向到 HTTPS(建议选择重定向)。
- 证书与密钥默认路径:
- 证书链:/etc/letsencrypt/live/yourdomain.com/fullchain.pem
- 私钥:/etc/letsencrypt/live/yourdomain.com/privkey.pem
- 自动续期:Certbot 默认会创建定时任务(cron 或 timer)。测试续期:sudo certbot renew --dry-run;也可检查状态:sudo systemctl status certbot.timer。
三 手动配置 Apache 使用证书
- 适用于已有证书(如企业 CA、手动 CSR 签发)或需要自定义虚拟主机的场景。
- 启用站点与模块:sudo a2ensite yourdomain.com.conf && sudo a2enmod ssl && sudo systemctl reload apache2。
- 示例虚拟主机(/etc/apache2/sites-available/yourdomain.com.conf):
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/yourdomain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
# 可选:使用 Certbot 提供的推荐 SSL 参数
Include /etc/letsencrypt/options-ssl-apache.conf
# 可选:HTTP/2
Protocols h2 http/1.1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- 强制 HTTP 跳转 HTTPS(/etc/apache2/sites-available/000-default.conf 或对应 HTTP 虚拟主机):
<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
- 检查语法并生效:sudo apache2ctl configtest && sudo systemctl reload apache2。
四 自签名证书仅用于测试
- 生成自签名证书(有效期 365 天):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/ssl/private/apache-selfsigned.key
-out /etc/ssl/certs/apache-selfsigned.crt
- 设置私钥权限:sudo chmod 600 /etc/ssl/private/apache-selfsigned.key。
- 在虚拟主机中将上述证书与私钥路径配置到 SSLCertificateFile 与 SSLCertificateKeyFile。
- 注意:自签名证书不被浏览器信任,生产环境请使用受信任 CA(如 Let’s Encrypt)。
五 验证与优化
- 验证与监控:
- 访问 https://yourdomain.com 检查锁标识;
- 使用 SSL Labs Server Test 测评等级;
- 查看日志:tail -f /var/log/apache2/{error,access}.log。
- 安全与性能优化(在 SSL VirtualHost 中按需添加):
- 协议与套件:Protocols h2 http/1.1;SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1;SSLCipherSuite HIGH:!aNULL:!MD5;SSLHonorCipherOrder on。
- OCSP Stapling:OCSPStapling on;OCSPStaplingCache shmcb:/run/ocsp-stapling-cache(128000)。
- 安全头:Header always set Strict-Transport-Security “max-age=63072000; includeSubDomains”;X-Frame-Options、X-Content-Type-Options、X-XSS-Protection。
- 续期验证:定期执行 sudo certbot renew --dry-run,确保证书到期前自动续期成功。