一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

怎样安装并配置 Apache 的 mod_ssl 模块

时间:2026-07-15 19:36:49 编辑:袖梨 来源:一聚教程网

Apache默认不带HTTPS能力,mod_ssl是必需扩展模块;需确认加载、配好证书路径、监听443端口并放行防火墙,无需重编译或正式证书,3分钟可建含TLS1.2/1.3的测试环境。

Apache 默认不带 HTTPS 能力,mod_ssl 是启用加密连接的必需模块。它不是独立软件,而是 Apache 的扩展组件,依赖 OpenSSL 实现 TLS 加密。安装和配置的关键在于确认模块已加载、证书路径正确、443 端口监听明确,且防火墙放行——整个过程无需重编译,也不必等待正式证书。

确认或启用 mod_ssl 模块

多数 Linux 发行版中,mod_ssl 是独立软件包,不会随 Apache 主程序默认安装。

  • Ubuntu/Debian:运行 sudo apt update && sudo apt install apache2 openssl libapache2-mod-ssl,再执行 sudo a2enmod ssl 启用模块
  • CentOS/RHEL 7+(含 Rocky/AlmaLinux):运行 sudo yum install mod_ssl opensslsudo dnf install mod_ssl openssl;安装后会自动生成 /etc/httpd/conf.d/ssl.conf 并自动启用
  • 验证是否就绪:执行 sudo apachectl -M | grep ssl(Debian/Ubuntu)或 sudo httpd -M | grep ssl(RHEL/CentOS),输出含 ssl_module (shared) 即表示成功加载

准备证书文件(测试可用自签名)

生产环境建议使用 CA 签发证书,测试阶段可快速生成带 SAN 的自签名证书,现代浏览器仅提示“证书不受信任”,不会标记为“不安全”。

  • 创建目录:sudo mkdir -p /etc/ssl/private /etc/ssl/certs
  • 生成私钥(4096 位):sudo openssl genrsa -out /etc/ssl/private/server.key 4096
  • 生成证书(含 localhost 和 127.0.0.1):sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt -subj "/CN=localhost" -addext "subjectAltName = DNS:localhost,IP:127.0.0.1"
  • 设置权限(必须):sudo chmod 600 /etc/ssl/private/server.key(私钥严禁全局可读)

配置 HTTPS 虚拟主机

Apache 不会自动监听 443 端口,也不能复用 HTTP 的 <VirtualHost> 块。必须显式定义一个监听 443 的虚拟主机,并启用 SSL 引擎。

  • 编辑默认 SSL 配置文件:
    • Ubuntu/Debian:/etc/apache2/sites-available/default-ssl.conf
    • CentOS/RHEL:/etc/httpd/conf.d/ssl.conf
  • 确保以下配置项已取消注释并填写正确路径:
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
  • 检查主配置中是否已声明监听:Listen 443(若无,请在 /etc/apache2/ports.conf/etc/httpd/conf/httpd.conf 中添加)

启动与验证

完成配置后需重启服务,并确认端口与防火墙状态。

  • 重启 Apache:
    • Ubuntu/Debian:sudo systemctl restart apache2
    • CentOS/RHEL:sudo systemctl restart httpd
  • 检查 443 端口是否监听:sudo ss -tlnp | grep :443
  • 放行防火墙:
    • Ubuntu:sudo ufw allow 443
    • CentOS/RHEL:sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload
  • 浏览器访问 https://localhost 或服务器 IP,应显示连接已加密(地址栏有锁形图标)

热门栏目