您可以通过将 SSL 证书安装到 Apache 服务器,使 Apache 服务器支持 HTTPS 安全访问。本文介绍如何在 Ubuntu 系统的 Apache 服务器上安装 SSL 证书。
说明:
- 本文档 Apache 版本以
Apache/2.4.58(Ubuntu)为例。- 安装前请确认 443 端口未被占用;如果 443 端口已被使用,请在安装证书时绑定其他端口。
获取证书
Apache 部署需要用到证书包中的三个文件:
domain_com.crt:证书文件domain_com.key:私钥文件domain_com.ca-bundle:证书链文件
安装 SSL 证书
- 将已获取到的
domain_com.crt证书文件、domain_com.key私钥文件、domain_com.ca-bundle证书链文件从本地目录拷贝到 Apache 服务器的/etc/apache2/ssl目录下。
说明:
- 若
/etc/apache2/ssl目录不存在,可通过mkdir -p /etc/apache2/ssl命令创建。- 不同版本之间可能存在差异,有些系统的 Apache 目录为
/etc/httpd。
- Ubuntu 的 Apache 通过
sites-enabled目录加载站点配置,需要为 SSL 站点创建软链接:
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
- 编辑
/etc/apache2/sites-available/default-ssl.conf文件,修改如下内容:
<VirtualHost *:443>
DocumentRoot /var/www/html
# 启用 SSL 功能
SSLEngine on
# 证书文件(与证书链合并后的完整文件)
SSLCertificateFile /etc/apache2/ssl/domain_com_full.crt
# 私钥文件的路径
SSLCertificateKeyFile /etc/apache2/ssl/domain_com.key
</VirtualHost>
说明:
Apache 2.4.8 起已废弃
SSLCertificateChainFile,推荐先合并证书与证书链,再由SSLCertificateFile统一加载:cat domain_com.crt domain_com.ca-bundle > /etc/apache2/ssl/domain_com_full.crt若你使用的是更老的 Apache 版本,也可以分别指定
SSLCertificateFile与SSLCertificateChainFile。若部署后检测提示"证书链不完整",请优先检查中间证书是否正确加载。
修改后保存配置文件并执行以下命令:
a2enmod ssl # 启用 ssl 模块,替换证书时可跳过
apache2ctl configtest # 检查配置文件是否有误
apache2ctl restart # 重启 Apache 使配置生效
HTTP 自动跳转 HTTPS 的安全配置(可选)
如果您需要将 HTTP 请求自动重定向到 HTTPS,可以通过以下操作设置:
在命令行中执行
a2enmod rewrite启用重定向模块。打开 HTTP 站点配置文件,例如
/etc/apache2/sites-available/000-default.conf,在配置文件中添加以下内容:
<VirtualHost *:80>
# 新增
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</VirtualHost>
- 重新启动 Apache 服务器,即可使用域名访问,实现 HTTP 自动跳转 HTTPS。