温馨提示×

Apache2怎么配置SSL证书

小樊
35
2026-07-31 23:39:32
栏目: 云计算

下面以 Ubuntu/Debian 为例,说明 Apache2 配置 SSL 证书(HTTPS) 的完整流程。如果你用的是 CentOS/RHEL,命令会略有不同,我也可以单独给你说明。


一、准备 SSL 证书

通常你会有以下文件之一:

1️⃣ 使用 Let’s Encrypt(推荐)

自动申请 + 自动续期,免费。

2️⃣ 手动证书

一般有:

  • 证书文件:example.com.crt
  • 私钥:example.com.key
  • 中间证书(可选):ca_bundle.crt

二、安装 Apache SSL 模块

sudo apt update
sudo apt install apache2
sudo a2enmod ssl
sudo systemctl restart apache2

✅ 启用 SSL 模块


三、准备证书目录

sudo mkdir -p /etc/apache2/ssl

将证书上传到该目录,例如:

/etc/apache2/ssl/
├── example.com.crt
├── example.com.key
└── ca_bundle.crt

⚠️ 私钥权限必须严格

sudo chmod 600 /etc/apache2/ssl/example.com.key

四、配置 Apache SSL 虚拟主机

1️⃣ 新建或编辑配置文件

sudo nano /etc/apache2/sites-available/example-ssl.conf

2️⃣ 示例配置(推荐)

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/example.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/example.com.key
    SSLCertificateChainFile /etc/apache2/ssl/ca_bundle.crt

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

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

✅ 如果是 Let’s Encrypt,路径通常是:

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

五、启用 HTTPS 站点

sudo a2ensite example-ssl.conf
sudo systemctl reload apache2

六、HTTP 自动跳转 HTTPS(强烈推荐)

编辑 HTTP 配置:

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

添加:

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

然后:

sudo systemctl reload apache2

七、测试 SSL 配置

1️⃣ 浏览器访问

https://example.com

2️⃣ SSL 检测工具

  • https://www.ssllabs.com/ssltest/

八、常见问题排查

❌ 端口 443 未监听

ss -lntp | grep 443

❌ 防火墙未放行

sudo ufw allow 443/tcp

❌ 证书路径错误

apache2ctl configtest

九、Let’s Encrypt 一键配置(推荐)

如果你还没证书,可以直接用:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com

✅ 自动配置 + 自动续期


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

  • ✅ 系统版本(Ubuntu / CentOS / Debian)
  • ✅ 是云服务器还是本地
  • ✅ 是否已有证书

我可以给你 完全针对你环境的配置方案

0