SSL 工具集 / sslops.cn

Apache 服务器安装 SSL 证书(CentOS)

您可以通过将 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 证书

  1. 将已获取到的 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。
  1. 检查 /etc/httpd/conf 目录下的 httpd.conf 配置文件,找到 Include conf.modules.d/*.conf 配置语句,并确认该语句未被注释。若已注释,请去掉行首的注释符号(#),保存配置文件。

  2. 检查 /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 命令进行安装。

  1. 编辑 /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.crt
    
    SSLCertificateFile      /etc/httpd/ssl/domain_com_full.crt
    
  • 旧写法(如本文的 Apache/2.4.6 示例)目前仍可正常工作。若部署后检测提示"证书链不完整",请优先检查中间证书是否正确加载。

  1. 保存配置文件之后重启 Apache 服务器,使配置生效。

HTTP 自动跳转 HTTPS 的安全配置(可选)

如果您需要将 HTTP 请求自动重定向到 HTTPS,可以通过以下操作设置:

  1. 编辑 /etc/httpd/conf 目录下的 httpd.conf 配置文件,检查是否存在 LoadModule rewrite_module modules/mod_rewrite.so。

如果存在,请去掉行首的注释符号(#);如果不存在,请添加该行,然后保存配置文件。

  1. 在 httpd.conf 文件中添加以下内容:
<VirtualHost *:80>
# 新增
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</VirtualHost>
  1. 重新启动 Apache 服务器,即可使用域名访问,实现 HTTP 自动跳转 HTTPS。
相关工具