1. 安装必要软件包
在Debian系统上,首先需要安装Apache2、SSL模块及Certbot工具(用于自动化获取和管理Let’s Encrypt证书)。执行以下命令:
sudo apt update
sudo apt install apache2 libapache2-mod-ssl # 安装Apache2及SSL模块
sudo apt install certbot python3-certbot-apache # 安装Certbot及Apache插件
2. 获取SSL证书
使用Certbot的--apache插件自动获取并配置Let’s Encrypt证书(支持单域名、多域名或通配符证书)。运行以下命令,按提示输入域名(如example.com、www.example.com)和管理员邮箱:
sudo certbot --apache -d example.com -d www.example.com
Certbot会自动验证域名所有权(通过HTTP-01挑战),并将证书文件存储在/etc/letsencrypt/live/example.com/目录下(包含fullchain.pem、privkey.pem等文件)。
3. 配置Apache虚拟主机
Certbot通常会自动创建或修改SSL虚拟主机配置文件(路径为/etc/apache2/sites-available/example.com-le-ssl.conf)。需确保以下关键配置正确(替换example.com为你的域名,/var/www/example.com/public_html为网站根目录):
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
# SSL核心配置
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem # 证书链文件
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem # 私钥文件
Include /etc/letsencrypt/options-ssl-apache.conf # 包含默认SSL优化参数(如协议版本、加密套件)
# 安全头设置(可选但推荐)
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"
</VirtualHost>
若未自动创建,可手动复制默认配置模板并修改:
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/example.com-le-ssl.conf
sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf # 编辑上述内容
4. 启用配置并重启Apache
启用SSL虚拟主机配置并重新加载Apache,使更改生效:
sudo a2ensite example.com-le-ssl.conf # 启用配置文件
sudo systemctl reload apache2 # 重新加载Apache(无需重启服务)
5. 验证SSL配置
https://example.com,确认浏览器地址栏显示锁图标(表示安全连接)。openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -dates # 查看证书有效期
sudo apache2ctl configtest # 检查Apache配置语法(需输出“Syntax OK”)
6. 配置自动续期
Let’s Encrypt证书有效期为90天,Certbot会自动创建cron任务(/etc/cron.d/certbot)每60天尝试续期。可通过以下命令手动测试续期流程(模拟正式续期):
sudo certbot renew --dry-run
若测试通过,无需额外操作,Certbot会在证书到期前自动续期并重启Apache。
7. 可选:优化SSL安全设置
Protocols h2 http/1.1,提升传输效率。/etc/letsencrypt/options-ssl-apache.conf,修改SSLCipherSuite为更安全的配置(如HIGH:!aNULL:!MD5:!RC4:!DH:!RSA)。/etc/apache2/sites-available/example.com.conf)中添加重定向规则:<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
然后启用重定向并重新加载Apache:sudo a2ensite example.com.conf
sudo systemctl reload apache2