温馨提示×

Debian Apache SSL证书配置指南

小樊
35
2025-12-27 15:50:40
栏目: 云计算

Debian Apache SSL证书配置指南

一 准备与前提

  • 准备一个已解析到服务器公网 IP 的域名,建议同时添加 A 记录yourdomain.comwww.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 EncryptCertbot 自动获取并配置。
    1. 安装客户端:sudo apt install certbot python3-certbot-apache。
    2. 获取并安装证书(同时覆盖 www 子域):sudo certbot --apache -d yourdomain.com -d www.yourdomain.com。
    3. 在交互中选择是否将 HTTP 重定向到 HTTPS(建议选择重定向)。
    4. 证书与密钥默认路径:
      • 证书链:/etc/letsencrypt/live/yourdomain.com/fullchain.pem
      • 私钥:/etc/letsencrypt/live/yourdomain.com/privkey.pem
    5. 自动续期: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。
  • 在虚拟主机中将上述证书与私钥路径配置到 SSLCertificateFileSSLCertificateKeyFile
  • 注意:自签名证书不被浏览器信任,生产环境请使用受信任 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,确保证书到期前自动续期成功。

0