Appearance
在 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.comrestorecon 恢复文件的 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 opensslRocky 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/。
- 打开的是自己的网站,浏览器没有“连接不安全”或证书错误提示。
- 点击地址栏左侧的网站信息按钮,进入连接信息并查看证书,确认域名正确、证书没有过期。
- 浏览常用页面,确认图片、样式和登录等功能正常。
以上均正常,就完成了 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 自动更新指南。不为自动化重新创建站点或修改业务路由。
