bg-tutorials

如何在Apache上安装SSL证书

在本指南中,您将逐步学习如何在 Apache 上安装 SSL 证书。这些说明适用于 Apache 2.4,即当前的稳定版本系列。

目录

如何在 Apache 上生成 CSR 代码?

证书签名请求(Certificate Signing Request),简称 CSR,是一个包含您域名所有权和/或公司信息的小型文本文件。生成 CSR 是购买 SSL 证书流程中不可或缺的一部分,所有商业证书颁发机构都要求 SSL 申请者完成此步骤。

您有两种选择:

在 Apache 上安装 SSL 证书

在证书颁发机构签署并向您发送 SSL 证书后,您就可以安全地将其安装到您的 Apache 服务器上了。请按照以下步骤操作。

步骤 1:准备您的证书文件

下载并解压从证书颁发机构收到的 ZIP 文件夹。您通常会找到以下文件:

  • .crt 文件 – 您的主 SSL 证书。
  • .ca-bundle 文件 – 构成信任链的中间证书(和根证书)。此链是浏览器和应用程序验证您证书所必需的。如果没有它,某些客户端可能会将您的网站标记为不安全。

将这些文件连同您在生成 CSR 时一起生成的私钥(.key)上传到服务器上的一个安全目录,例如 /etc/ssl/。请确保私钥只有 root 用户可读(chmod 600)。

推荐做法(Apache 2.4.8 及更新版本):将您的证书与 CA 证书包合并为一个”完整证书链”文件。自 Apache 2.4.8 起,SSLCertificateFile 指令可以直接从该文件中加载中间证书,因此不再需要旧版的 SSLCertificateChainFile 指令:

cat your_domain.crt your_domain.ca-bundle > your_domain_fullchain.crt

如果您的 CA 提供的中间证书是单独的文件,请先将您的证书与这些中间证书连接起来,中间证书的顺序应从签署您证书的那个开始,一直到根证书(根证书本身是可选的):

cat your_domain.crt intermediate.crt root.crt > your_domain_fullchain.crt

例如,在安装 Sectigo PositiveSSL 证书时,您需要将您的域名证书与 Sectigo 中间证书包连接起来。请始终使用您的 CA 提供的确切文件名。

步骤 2:启用 SSL 模块(mod_ssl)

在配置 HTTPS 之前,请确保 Apache 的 SSL 模块已启用。

在 Debian/Ubuntu 上,启用 mod_ssl(以及您在步骤 4 中配置 HSTS 头部时需要用到的 mod_headers):

sudo a2enmod ssl
sudo a2enmod headers

在 RHEL/CentOS/AlmaLinux/Rocky Linux 上,安装 SSL 模块软件包(该模块安装后会自动加载):

sudo dnf install mod_ssl

步骤 3:定位 Apache 配置文件

根据您的操作系统和 Apache 版本,配置文件可能位于不同的文件中。请在以下位置之一查找 httpd.conf、apache2.conf 或专门的 SSL/站点配置文件:

  • Debian/Ubuntu:主配置文件为 /etc/apache2/apache2.conf;各站点的配置文件在 /etc/apache2/sites-available/ 中。
  • RHEL/CentOS/AlmaLinux/Rocky:主配置文件为 /etc/httpd/conf/httpd.conf;SSL 配置文件为 /etc/httpd/conf.d/ssl.conf。

提示:如果您的 Apache 服务器运行在 Ubuntu 上,您也可以参考我们专门的Ubuntu SSL 安装说明。

步骤 4:配置虚拟主机

首先,备份您当前的配置文件。这样一来,如果出现问题,您可以快速恢复更改:

sudo cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.backup

现在打开配置文件并设置 HTTPS(端口 443)虚拟主机。一个完整的、符合现代标准的虚拟主机配置如下所示:

<VirtualHost *:443>
    ServerName  www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example

    SSLEngine on

    # Apache 2.4.8+ : server certificate + intermediate chain in ONE file
    SSLCertificateFile    /etc/ssl/example_com_fullchain.crt
    SSLCertificateKeyFile /etc/ssl/example_com.key

    # Recommended TLS hardening (2026)
    SSLProtocol         -all +TLSv1.2 +TLSv1.3
    SSLHonorCipherOrder off

    # Tell browsers to always use HTTPS. Remove the leading # to enable HSTS,
    # but only after you have confirmed HTTPS works correctly:
    # Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

    ErrorLog  ${APACHE_LOG_DIR}/example_error.log
    CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>

将 example.com、文档根目录以及文件路径替换为您自己的值。以下是关键指令的作用说明:

  • SSLEngine on – 为此虚拟主机启用 SSL/TLS。
  • SSLCertificateFile – 指向您在步骤 1 中创建的完整证书链文件(证书 + 中间证书)的路径。在 Apache 2.4.8 及以上版本中,这一条指令即可替代已弃用的 SSLCertificateChainFile。
  • SSLCertificateKeyFile – 指向您与 CSR 一同生成的私钥的路径。
  • SSLProtocol -all +TLSv1.2 +TLSv1.3 – 禁用旧版、不安全的 SSL/TLS 协议,仅允许使用 TLS 1.2 和 TLS 1.3。
  • Strict-Transport-Security(HSTS)- 指示浏览器仅通过 HTTPS 连接。需要 mod_headers(在步骤 2 中已启用)。只有在确认 HTTPS 正常工作后才应启用它。

请确保这些行都不以 # 开头(这样会将它们注释掉)。在 Debian/Ubuntu 上,${APACHE_LOG_DIR} 会解析为 /var/log/apache2;在基于 RHEL 的系统上则应使用 /var/log/httpd/。

旧版服务器:如果您使用的 Apache 版本低于 2.4.8,请将证书和证书链保存在单独的文件中,并在 SSLCertificateFile 下方添加已弃用的 SSLCertificateChainFile /etc/ssl/example_com.ca-bundle 指令。在任何现代服务器上,都建议采用上述完整证书链的方式。

高级加固(可选):要获得更强的密码套件和 OCSP 装订支持,您可以使用 Mozilla SSL 配置生成器生成一份定制配置。OCSP 装订还需要在您的全局 Apache 配置中添加 SSLStaplingCache 指令。

启用该站点:在 Debian/Ubuntu 上,放置在 /etc/apache2/sites-available/ 中的虚拟主机在您启用它之前不会被加载。如果您将此配置保存为一个新文件(例如 example-ssl.conf),请使用以下命令激活它:

sudo a2ensite example-ssl.conf

您也可以直接编辑系统自带的 default-ssl.conf,但同样需要通过 a2ensite default-ssl 来启用它。在 RHEL/CentOS/AlmaLinux/Rocky 上,/etc/httpd/conf.d/ 中的文件会自动加载 —— 但请注意,ssl.conf 本身已自带一个使用自签名证书的默认 <VirtualHost _default_:443> 配置块,因此您应该编辑该配置块,或者将您的虚拟主机添加为单独的文件(如 /etc/httpd/conf.d/yourdomain.conf),以避免出现两个重叠的 443 端口主机。

步骤 5:将 HTTP 重定向到 HTTPS

为了确保访问者始终能够访问您网站的安全版本,请添加第二个位于端口 80 的虚拟主机,将所有 HTTP 流量永久重定向到 HTTPS:

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

步骤 6:测试您的配置并重启 Apache

在重启之前,请务必先测试您的配置。语法错误可能会导致您的网站下线,因此请运行:

sudo apachectl configtest

如果一切正确,您将看到:

Syntax OK

现在通过重新加载 Apache 来应用更改(重新加载会在不断开现有连接的情况下激活新配置):

sudo systemctl reload apache2     # Debian/Ubuntu
sudo systemctl reload httpd       # RHEL/CentOS/AlmaLinux/Rocky

如果重新加载还不够,请改为重启该服务(sudo systemctl restart apache2 或 httpd)。在没有 systemd 的旧系统上,请使用 sudo apachectl graceful。

如果安装成功,恭喜您!您的网站现在已通过 SSL/TLS 得到保护。

测试您的 SSL 安装

在 Apache 上安装 SSL 证书后,请验证一切是否按预期工作。即时扫描将揭示任何可能影响您证书性能的错误或漏洞。使用我们的SSL Checker 工具来检查您安装的状态。

您还可以直接从命令行确认证书及其证书链:

openssl s_client -connect www.example.com:443 -servername www.example.com

在哪里购买适用于 Apache 的 SSL 证书?

购买适用于 Apache 的 SSL 证书的最佳选择是 SSL Dragon。我们在整个 SSL 产品系列中提供无与伦比的价格和折扣,并精心挑选了市场上最优秀的 SSL 品牌,为您的网站配备坚不可摧的保护。我们所有的 SSL 证书都兼容 Apache。立即获取 SSL 证书!

请注意,SSL/TLS 证书的有效期正在缩短:最长有效期将在 2026 年 3 月降至 200 天,2027 年降至 100 天,到 2029 年仅为 47 天。有效期缩短意味着续期更加频繁,因此值得提前规划好您的续期流程(以及自动化方案)。

常见问题

Apache 中的 SSL 是什么?

SSL(安全套接层,Secure Sockets Layer)现已被 TLS(传输层安全协议,Transport Layer Security)取代,是一种加密协议,用于加密两个网络端点之间的通信,例如 Apache 这样的 Web 服务器与用户浏览器之间的通信。

我如何知道 Apache 的 SSL 是否已启用?

在 Debian 和 Ubuntu 发行版上,在配置中搜索 SSL 协议指令:

grep -ir SSLProtocol /etc/apache2/

如果 SSL 已配置,您将看到类似以下的输出:

/etc/apache2/mods-available/ssl.conf:SSLProtocol +TLSv1.2 +TLSv1.3

您还可以确认 SSL 模块是否已加载到正在运行的服务器中:

apachectl -M | grep ssl

Apache 中的 SSL .conf 文件在哪里?

根据您的操作系统和设置的不同,配置文件可能位于不同的位置。在 Debian/Ubuntu 上,请检查 /etc/apache2/apache2.conf 以及 /etc/apache2/sites-available/ 中各站点的文件。在 RHEL/CentOS/AlmaLinux/Rocky 上,请检查 /etc/httpd/conf/httpd.conf 和 /etc/httpd/conf.d/ssl.conf。

SSLCertificateFile 和 SSLCertificateChainFile 有什么区别?

SSLCertificateFile 指向您的服务器证书。自 Apache 2.4.8 起,同一文件也可以包含中间证书,从而提供完整的证书链。SSLCertificateChainFile 是旧版单独提供这些中间证书的方式,但自 Apache 2.4.8 起已被弃用。在任何现代服务器上,都应将证书和中间证书放在同一个文件中,并仅通过 SSLCertificateFile 来引用它。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.