温馨提示×

linux apache怎么配ssl

小樊
45
2026-10-29 01:03:12
栏目: 云计算

下面给你一个**在 Linux 上给 Apache 配置 SSL(HTTPS)**的常见做法,适用于 Ubuntu / Debian / CentOS / Rocky 等常见发行版。


一、准备 SSL 证书

你有三种常见方式:

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

sudo apt install certbot python3-certbot-apache   # Ubuntu/Debian
# 或
sudo yum install certbot python3-certbot-apache   # CentOS/RHEL

申请证书:

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

✅ Certbot 会自动:

  • 配置 SSL
  • 设置 80 → 443 跳转
  • 配置自动续期

2️⃣ 使用自签名证书(测试用)

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/private/apache-selfsigned.key \
  -out /etc/ssl/certs/apache-selfsigned.crt

3️⃣ 使用 CA 签发证书(生产)

你已有:

  • example.com.crt
  • example.com.key
  • (可选)ca-bundle.crt

二、启用 Apache SSL 模块

sudo a2enmod ssl        # Ubuntu/Debian
sudo systemctl restart apache2

CentOS/RHEL 默认已启用


三、配置 Apache 虚拟主机(SSL)

示例:Ubuntu / Debian

编辑或新建:

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

内容示例:

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

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/example.com.crt
    SSLCertificateKeyFile   /etc/ssl/private/example.com.key
    SSLCertificateChainFile /etc/ssl/certs/ca-bundle.crt

    <Directory /var/www/html>
        AllowOverride All
    </Directory>
</VirtualHost>

启用站点:

sudo a2ensite example-ssl
sudo systemctl reload apache2

示例:CentOS / Rocky

sudo nano /etc/httpd/conf.d/ssl.conf

修改关键项:

SSLCertificateFile /etc/pki/tls/certs/example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/example.com.key
SSLCertificateChainFile /etc/pki/tls/certs/ca-bundle.crt
sudo systemctl restart httpd

四、HTTP 强制跳转 HTTPS(推荐)

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

五、防火墙放行 443

sudo ufw allow 443/tcp        # Ubuntu
# 或
sudo firewall-cmd --add-port=443/tcp --permanent
sudo firewall-cmd --reload

六、测试

curl -I https://example.com

或浏览器访问:

https://example.com

七、常见排错

❌ 证书不受信任 → 用了自签证书
❌ 无法访问 443 → 防火墙 / 云安全组未开
❌ Apache 起不来 → 看日志

journalctl -xe
# 或
tail -f /var/log/apache2/error.log

如果你告诉我:

  • Linux 发行版
  • Apache 版本
  • 证书来源(Let’s Encrypt / 自签 / CA)

我可以给你完全对应的配置模板。

0 踩