插件窝 干货文章 Linux apache怎么实现https的配置

Linux apache怎么实现https的配置

Apache sudo ssl 证书 769    来源:    2025-04-22

在 Linux 上为 Apache 配置 HTTPS 需要以下几个关键步骤,我将分步详细说明:


1. 安装必要的软件包

# Debian/Ubuntu
sudo apt update
sudo apt install apache2 openssl certbot python3-certbot-apache

# RHEL/CentOS
sudo yum install httpd mod_ssl openssl certbot python3-certbot-apache

2. 获取 SSL 证书

方法一:使用 Let's Encrypt(免费证书)

sudo certbot --apache
  • 按提示输入域名和邮箱,Certbot 会自动完成证书获取和 Apache 配置。
  • 证书会自动续期(默认配置了定时任务)。

方法二:手动生成自签名证书(仅测试用)

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/ssl/private/apache-selfsigned.key \
    -out /etc/ssl/certs/apache-selfsigned.crt
  • 填写证书信息(如国家、域名等),生成的证书会保存在 /etc/ssl/ 目录。

3. 配置 Apache 启用 HTTPS

编辑 SSL 配置文件

# Debian/Ubuntu
sudo nano /etc/apache2/sites-available/default-ssl.conf

# RHEL/CentOS
sudo nano /etc/httpd/conf.d/ssl.conf

修改或确认以下关键参数:

<VirtualHost *:443>
    ServerName your-domain.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem  # Let's Encrypt 证书路径
    SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem # 私钥路径
    # 如果是自签名证书,替换为:
    # SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    # SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>

4. 启用 SSL 模块和站点

Debian/Ubuntu

sudo a2enmod ssl          # 启用 SSL 模块
sudo a2ensite default-ssl # 启用 SSL 站点
sudo systemctl restart apache2

RHEL/CentOS

sudo systemctl enable --now httpd
sudo systemctl restart httpd

5. 强制 HTTP 跳转到 HTTPS(可选)

编辑 HTTP 虚拟主机配置文件(如 /etc/apache2/sites-available/000-default.conf),添加重定向规则:

<VirtualHost *:80>
    ServerName your-domain.com
    Redirect permanent / https://your-domain.com/
</VirtualHost>

重启 Apache:

sudo systemctl restart apache2

6. 验证配置

  • 检查 HTTPS 访问:浏览器访问 https://your-domain.com,确认锁图标正常。
  • 测试 SSL 配置bash sudo apache2ctl configtest # 检查语法 openssl s_client -connect your-domain.com:443 -servername your-domain.com

常见问题排查

  1. 证书路径错误:确认 SSLCertificateFileSSLCertificateKeyFile 路径正确。
  2. 端口未开放:确保防火墙允许 443 端口: bash sudo ufw allow 443/tcp # Debian/Ubuntu sudo firewall-cmd --add-service=https --permanent && firewall-cmd --reload # RHEL/CentOS
  3. 模块未启用:运行 sudo apache2ctl -M | grep ssl 确认 ssl_module 已加载。

通过以上步骤,你的 Apache 将成功启用 HTTPS。对于生产环境,推荐使用 Let's Encrypt 自动管理证书,既免费又安全。