Skip to content

在 Apache 中首次部署 SSL 证书并启用 HTTPS ​

本文为 Linux 上已经能通过 HTTP 访问的 Apache 网站开启 HTTPS。示例域名为 trustasia.com,请换成你的网站域名。Debian/Ubuntu 使用 apache2,Rocky Linux 使用 httpd,第三步按服务器系统选择一节操作。

操作流程: 准备环境 → KeyManager 导出 → 安装证书 → 配置 HTTPS → 检查网站访问。

第一步:准备部署环境 ​

  • 在 Apache 服务器终端操作,使用有 sudo 权限的账号;原 HTTP 网站正常。
  • 找到网站的配置文件,保存副本。文件中的 <VirtualHost> 配置块包含该网站的域名、目录和访问设置。
  • 域名指向网站入口,客户端能访问 443。使用 CDN 等代理时,还要在代理入口配置证书。
  • 已签发证书,下一步从 KeyManager 导出证书和私钥,保存在网站目录之外。

第二步:导出并安装证书 ​

2.1 从 KeyManager 导出 ​

在 CertCloud 的已签发订单中点击“下载证书 → 打开 KeyManager”,同步到保存了匹配私钥的 KeyManager 环境。在“证书管理 → 更多 → 导出证书”选择 Apache(PEM) 格式,再将完整证书链和私钥上传到服务器。操作图示见KeyManager 下载与导出指南,首次部署不需要安装自动化工具。

上传后记下两个文件的完整路径,下一节填写为 SOURCE_CERT 和 SOURCE_KEY。文件名按实际导出结果填写。

2.2 安装到服务使用的目录 ​

在 Apache 服务器终端修改下面三个变量,然后整段执行。目标已有同名文件时先保存副本,命令会覆盖它们。

bash
sudo bash -c 'set -eu
SOURCE_CERT="/root/cert-files/fullchain.pem"
SOURCE_KEY="/root/cert-files/privkey.pem"
TARGET_DIR="/etc/apache2/tls/trustasia.com"

install -d -m 700 -o root -g root "$TARGET_DIR"
install -m 644 -o root -g root "$SOURCE_CERT" "$TARGET_DIR/fullchain.pem"
install -m 600 -o root -g root "$SOURCE_KEY" "$TARGET_DIR/privkey.pem"
echo "证书和私钥已安装到:$TARGET_DIR"'
  • SOURCE_CERT:上传到服务器的完整证书链文件路径。
  • SOURCE_KEY:同一次导出的私钥文件路径。
  • TARGET_DIR:证书安装目录。Debian/Ubuntu 示例为 /etc/apache2/tls/trustasia.com;Rocky Linux 改为 /etc/httpd/tls/trustasia.com。安装后的文件名固定为 fullchain.pem 和 privkey.pem,第三步填写相同路径。

看到“证书和私钥已安装到……”表示复制成功。Rocky Linux 还需执行下面这条命令,让服务按系统权限读取文件;路径换成刚填写的 TARGET_DIR,Debian/Ubuntu 跳过:

bash
sudo restorecon -RF /etc/httpd/tls/trustasia.com

restorecon 恢复文件的 SELinux 标签,无需关闭 SELinux。使用 /etc/httpd/ 以外的自定义目录时,先由管理员配置该目录的读取规则。

第三步:添加 HTTPS 配置 ​

3.1 Debian/Ubuntu ​

在服务器终端执行 sudo a2enmod ssl,启用 HTTPS 模块。检查 /etc/apache2/ports.conf 中有 Listen 443;已有这一项时不用重复添加。

将原 HTTP 网站的 <VirtualHost> 配置块复制到 /etc/apache2/sites-available/trustasia.com-ssl.conf,保留网站目录和访问设置,再将端口及证书部分改成下面的形式。原 HTTP 配置继续保留:

apache
<VirtualHost *:443>
    ServerName trustasia.com
    SSLEngine on
    SSLCertificateFile /etc/apache2/tls/trustasia.com/fullchain.pem
    SSLCertificateKeyFile /etc/apache2/tls/trustasia.com/privkey.pem
    DocumentRoot /实际网站目录
    # 保留业务所需 Directory、ProxyPass、访问控制及日志配置。
</VirtualHost>

按下面说明替换配置:

  • ServerName:你的网站域名。
  • SSLCertificateFile、SSLCertificateKeyFile:第二步安装后的两个文件路径。
  • DocumentRoot:原 HTTP 网站的目录;反向代理网站沿用原代理配置。示例只展示证书相关部分,网站原有的访问设置仍需保留。

保存后执行以下命令,SITE_FILE 填刚保存的文件名。检查成功才会重新加载服务:

bash
SITE_FILE="trustasia.com-ssl.conf"
sudo a2ensite "$SITE_FILE" && \
sudo apache2ctl configtest && \
sudo apache2ctl -S && \
sudo systemctl reload apache2

出现 Syntax OK 且加载命令没有报错后,进入第四步。报错时先按提示修正配置;首次启用模块若提示需要 restart,请安排允许重启的时间。

3.2 Rocky Linux ​

安装所需组件:

bash
sudo dnf install -y httpd mod_ssl openssl

Rocky Linux 将网站配置放在 /etc/httpd/conf.d/,保存后由 Apache 自动读取。

保存 /etc/httpd/conf.d/ssl.conf 的副本,确认其中保留 Listen 443 https。如果未使用的默认站点引用了不存在的 localhost.crt 或 localhost.key,只移除该默认站点的 <VirtualHost>...</VirtualHost> 段,保留文件中的其他设置。

将原 HTTP 网站的 <VirtualHost> 配置块复制到 /etc/httpd/conf.d/trustasia.com-ssl.conf,保留网站目录和访问设置,修改端口并加入下面的证书配置。原 HTTP 配置继续保留:

apache
<VirtualHost *:443>
    ServerName trustasia.com
    SSLEngine on
    SSLCertificateFile /etc/httpd/tls/trustasia.com/fullchain.pem
    SSLCertificateKeyFile /etc/httpd/tls/trustasia.com/privkey.pem
    DocumentRoot /实际网站目录
    # 保留实际网站的 Directory、ProxyPass、日志等配置。
</VirtualHost>

ServerName 换成网站域名;两个证书路径使用第二步的安装结果;DocumentRoot 及其他业务设置沿用原网站。保存后检查并加载:

bash
sudo httpd -t && \
sudo httpd -S && \
sudo systemctl reload httpd

出现 Syntax OK 且加载命令没有报错后,进入第四步。若 firewalld 尚未放行 HTTPS,可在网站网卡使用默认防火墙区域时执行:

bash
sudo firewall-cmd --permanent --add-service=https && \
sudo firewall-cmd --reload

网卡使用其他防火墙区域时,在对应区域放行 HTTPS;云安全组也需允许访问 TCP 443。

第四步:验证访问与异常恢复 ​

4.1 验证 HTTPS 访问 ​

在自己的电脑上打开浏览器,访问 https://trustasia.com/。把 trustasia.com 换成第三步 ServerName 中填写的网站域名;端口不是 443 时,在域名后加上实际端口,如 https://trustasia.com:8443/。

  1. 打开的是自己的网站,浏览器没有“连接不安全”或证书错误提示。
  2. 点击地址栏左侧的网站信息按钮,进入连接信息并查看证书,确认域名正确、证书没有过期。
  3. 浏览常用页面,确认图片、样式和登录等功能正常。

以上均正常,就完成了 HTTPS 部署。如果使用 CDN 等代理或仍显示旧证书,按证书检查说明核对 Apache 上的证书。

4.2 异常时恢复 ​

如果本次配置后网站无法正常访问,先停用第三步新增的 HTTPS 配置:Debian/Ubuntu 使用 sudo a2dissite trustasia.com-ssl.conf(换成实际文件名);Rocky Linux 将该 .conf 文件移到配置目录之外保存。若改过原配置,用第一步保存的副本恢复。

Debian/Ubuntu 执行 sudo apache2ctl configtest && sudo systemctl reload apache2;Rocky Linux 执行 sudo httpd -t && sudo systemctl reload httpd。完成后打开原 HTTP 地址,确认网站恢复。

后续自动更新 ​

已有 HTTPS 正常后,记录证书与私钥实际路径,继续Apache 自动更新指南。不为自动化重新创建站点或修改业务路由。

参考文档 ​

参考链接 ​