您可以通过将 SSL 证书安装到 Apache 服务器,使 Apache 服务器支持 HTTPS 安全访问。本文介绍如何在 CentOS 系统的 Apache 服务器上安装 SSL 证书。
说明:
- 本文档 Apache 版本以
Apache/2.4.6(CentOS)为例。- 安装前请确认 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/httpd/ssl目录下。
说明:
- 若
/etc/httpd/ssl目录不存在,可通过mkdir -p /etc/httpd/ssl命令创建。- 不同系统之间目录位置可能存在差异,部分系统的 Apache 目录为
/etc/apache2。
检查
/etc/httpd/conf目录下的 httpd.conf 配置文件,找到Include conf.modules.d/*.conf配置语句,并确认该语句未被注释。若已注释,请去掉行首的注释符号(#),保存配置文件。检查
/etc/httpd/conf.modules.d目录下的 00-ssl.conf 配置文件,找到LoadModule ssl_module modules/mod_ssl.so配置语句,并确认该语句未被注释。若已注释,请去掉行首的注释符号(#),保存配置文件。
说明: 若以上配置文件中未找到
LoadModule ssl_module modules/mod_ssl.so,请确认是否已安装 mod_ssl 模块。若未安装,可通过执行yum install mod_ssl命令进行安装。
- 编辑
/etc/httpd/conf.d目录下的 ssl.conf 配置文件,修改如下内容:
<VirtualHost *:443>
DocumentRoot /var/www/html
# 启用 SSL 功能
SSLEngine on
# 证书文件的路径
SSLCertificateFile /etc/httpd/ssl/domain_com.crt
# 私钥文件的路径
SSLCertificateKeyFile /etc/httpd/ssl/domain_com.key
# 证书链文件的路径
SSLCertificateChainFile /etc/httpd/ssl/domain_com.ca-bundle
</VirtualHost>
说明:
Apache 2.4.8 起已废弃
SSLCertificateChainFile。推荐将证书文件与证书链文件合并成一个文件,仅用SSLCertificateFile指向:cat domain_com.crt domain_com.ca-bundle > domain_com_full.crtSSLCertificateFile /etc/httpd/ssl/domain_com_full.crt旧写法(如本文的 Apache/2.4.6 示例)目前仍可正常工作。若部署后检测提示"证书链不完整",请优先检查中间证书是否正确加载。
- 保存配置文件之后重启 Apache 服务器,使配置生效。
HTTP 自动跳转 HTTPS 的安全配置(可选)
如果您需要将 HTTP 请求自动重定向到 HTTPS,可以通过以下操作设置:
- 编辑
/etc/httpd/conf目录下的 httpd.conf 配置文件,检查是否存在LoadModule rewrite_module modules/mod_rewrite.so。
如果存在,请去掉行首的注释符号(
#);如果不存在,请添加该行,然后保存配置文件。
- 在 httpd.conf 文件中添加以下内容:
<VirtualHost *:80>
# 新增
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</VirtualHost>
- 重新启动 Apache 服务器,即可使用域名访问,实现 HTTP 自动跳转 HTTPS。