温馨提示×

apache2如何启用HTTPS

小樊
46
2026-07-17 19:24:16
栏目: 编程语言

Apache2 上启用 HTTPS,通常是通过 SSL/TLS 证书 来实现的。下面按常见场景给你一个清晰、可操作的步骤说明(以 Ubuntu / Debian 为例)。


一、前提条件

  • 已安装 Apache2
  • 有可用的 域名(证书申请需要)
  • 服务器 80 / 443 端口已开放
  • 拥有服务器 sudo 权限

二、安装 SSL 模块

sudo apt update
sudo apt install apache2

启用 SSL 模块:

sudo a2enmod ssl
sudo systemctl restart apache2

三、准备 SSL 证书

✅ 方式 1:使用 Let’s Encrypt(推荐,免费)

1. 安装 Certbot

sudo apt install certbot python3-certbot-apache

2. 申请并自动配置 HTTPS

sudo certbot --apache -d example.com -d www.example.com

会自动:

  • 申请证书
  • 配置 Apache 虚拟主机
  • 设置 HTTP 自动跳转 HTTPS

3. 测试自动续期

sudo certbot renew --dry-run

这是最常用、最简单、生产环境推荐方式


✅ 方式 2:使用自签名证书(仅测试)

sudo mkdir -p /etc/ssl/apache2
sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/apache2/apache.key \
  -out /etc/ssl/apache2/apache.crt

填写信息示例:

Common Name: example.com

四、配置 Apache 使用 HTTPS

1. 启用 SSL 站点配置

sudo a2ensite default-ssl.conf

或复制并自定义:

sudo cp /etc/apache2/sites-available/default-ssl.conf \
        /etc/apache2/sites-available/your-site.conf
sudo a2ensite your-site.conf

2. 编辑 SSL 配置

sudo nano /etc/apache2/sites-available/your-site.conf

关键配置示例:

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/ssl/apache2/apache.crt
    SSLCertificateKeyFile /etc/ssl/apache2/apache.key

    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

五、HTTP 自动跳转 HTTPS(推荐)

编辑 80 端口站点:

sudo nano /etc/apache2/sites-available/000-default.conf

添加:

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

六、重启 Apache

sudo systemctl restart apache2

七、验证 HTTPS

  • 浏览器访问:
https://example.com
  • 使用工具检测:
https://www.ssllabs.com/ssltest/

八、常见问题

❓ 443 端口无法访问

sudo ufw allow 443/tcp

❓ 证书不生效

sudo apache2ctl -S
sudo journalctl -u apache2

九、总结(最简流程)

sudo apt install certbot python3-certbot-apache
sudo certbot --apache
sudo systemctl restart apache2

如果你愿意,可以告诉我:

  • ✅ 系统版本(Ubuntu / CentOS / Debian)
  • ✅ 是否使用 Docker
  • ✅ 是否已有 Nginx / 反向代理
    我可以给你 更精确的配置示例

0