You need to enable JavaScript to run this app.
导航
安装证书到Apache服务器
最近更新时间:2024.11.13 17:09:00首次发布时间:2022.11.03 20:34:32

本教程将指导您安装SSL证书到Apache服务器。
当CA签发SSL证书后,您可以从火山引擎证书中心控制台下载SSL证书。获得SSL证书后,您需要将SSL证书安装到您的Web服务器。这样做可以使您的Web服务支持HTTPS。

前提条件

  • 您已经通过证书中心提交了SSL证书请求,并且SSL证书已经签发。
    如果您还没有提交SSL证书请求,请参见快速入门
  • 您的Web服务器的443端口是开放的。
    HTTPS协议的默认端口是443。只有当443端口是开放的,服务器才能够处理客户端的HTTPS连接请求。

环境说明

本教程以以下环境为例介绍相关操作步骤:

  • Web服务器:
    • 操作系统:Ubuntu 22.04 64位
    • Web服务程序:Apache/2.4.41 版本
    • Web服务器程序的安装目录:/etc/apache2

    说明

    Web服务器环境不同,可能导致实际配置与本文描述有差异。这种情况下,您需以实际环境为准,本文仅作为参考。

  • 域名:ssl.example.com

配置流程

本教程将指导您修改apache2.conf配置文件和<VirtualHost>配置,以开启监听443端口并为主机关联证书。本教程包含以下步骤:

  1. 下载证书到本地计算机
  2. 上传证书到Apache服务器
  3. 在Apache服务器配置证书
  4. 验证证书是否配置成功

步骤1:下载证书到本地计算机

SSL证书签发后,您可以从证书中心控制台下载证书。您需要选择适配Apache服务的下载选项(如下图所示)。具体操作,请参见下载SSL证书

图片

下载成功后,您会得到一个压缩包。压缩包的名称为<CommonName>_apache。其中,<CommonName>表示证书颁发给的域名。解压缩后,您会获得以下文件:

  • <CommonName>_chain.crt:证书链文件。
  • <CommonName>_public.crt:证书文件。
  • <CommonName>.key:私钥文件。

    注意

    如果您在提交SSL证书请求时使用了一个手动上传的CSR,并且您没有提供私钥,那么解压缩得到的文件不包含私钥文件。这种情况下,您需要自行准备私钥文件,以便完成后续配置。

步骤2:上传证书到Apache服务器

上传本地文件到远程服务器的方式有很多,本教程以使用scp命令为例,介绍如何将证书从本地Windows计算机上传到Apache服务器。

  1. 远程登录Apache服务器。

  2. 在Apache安装目录,创建一个用来存放证书的文件夹,命名为cert
    Apache版本不同,安装目录可能不同。本示例中,Apache的安装目录为 /etc/apache2

    cd /etc/apache2
    mkdir cert
    

    说明

    您可以使用find / -name apache2.conf命令,查询apache2.conf配置文件所在路径,也就是Apache安装目录。

  3. 打开本地计算机的命令行工具。
    以Windows 10操作系统为例,在桌面左下角的开始图标上单击鼠标右键,然后单击Windows PowerShell

  4. 使用scp命令上传证书文件到服务器。

    scp <本地计算机上的文件路径> root@<远程服务器IP>:/etc/apache2/cert
    

    运行scp命令后,根据命令提示,输入root账号的登录密码。
    示例:

    • 上传证书链文件:

      scp C:\ssl.example.com_chain.crt root@<远程服务器IP>:/etc/apache2/cert
      
    • 上传证书文件:

      scp C:\ssl.example.com_public.crt root@<远程服务器IP>:/etc/apache2/cert
      
    • 上传私钥文件:

      scp C:\ssl.example.com.key root@<远程服务器IP>:/etc/apache2/cert
      
  5. 验证文件是否上传成功。
    在Apache服务器,运行ll /etc/apache2/cert命令,列举cert目录下的文件。
    如果文件列表中包含证书链文件、证书文件和私钥文件,表示证书已上传成功。

步骤3:在Apache服务器配置证书

  1. 启用mod_ssl模块。
    在Apache中,mod_ssl模块用于启用HTTPS。

    a2enmod ssl
    
  2. 重新加载Apache服务。
    启用mod_ssl模块后,您需要重启Apache使配置生效。

    systemctl restart apache2
    
  3. 新增<VirtualHost>配置。

    vim /etc/apache2/sites-available/ssl.example.com.conf
    

    在配置文件中,添加以下SSL配置:

    <VirtualHost *:443>
       # 网站域名
       ServerName ssl.example.com
       # 网站根目录,与80端口相关配置一样
       DocumentRoot /var/www/ssl.example.com
       
       # 启用SSL
       SSLEngine on
       # 证书链文件路径
       SSLCertificateChainFile /etc/apache2/cert/ssl.example.com_chain.crt 
       # 证书文件路径
       SSLCertificateFile /etc/apache2/cert/ssl.example.com_public.crt
       # 私钥文件路径
       SSLCertificateKeyFile /etc/apache2/cert/ssl.example.com.key
    </VirtualHost>
    

    说明

    • 进入vim编辑器后,按i键进入编辑模式。
    • 编辑完成后,按Esc键退出编辑模式,然后输入:wq,保存变更并退出vim编辑器。
  4. 启用新增的<VirtualHost>配置。

    a2ensite ssl.example.com.conf
    
  5. 检查配置文件是否有语法错误。

    apache2ctl configtest
    

    如果返回Syntax OK,表示无语法错误。如果有语法错误,您可根据提示重新修改配置。

  6. 重新加载Apache服务。

    systemctl reload apache2
    

步骤4:验证证书是否配置成功

注意

进行验证操作前,请确保服务器已开放443端口。如果您的服务器因安全组、防火墙等策略,未允许443端口访问,请先修改对应策略。

打开本地计算机上的浏览器,使用HTTPS协议访问域名:https://ssl.example.com

成功建立连接后,浏览器的地址栏左侧会出现一个图标,表示连接是安全的。(浏览器及浏览器的版本不同,图标有可能存在差异。以您实际看到的图标为准。)您可以单击对应图标,查看连接详情。连接详情中包含服务器证书信息。

图片

(可选)HTTP请求强制跳转为HTTPS请求

网站启用HTTPS通信后,您还可以修改<VirtualHost>配置,使终端用户的HTTP请求强制跳转为HTTPS请求。这样做能够确保终端用户总是通过HTTPS协议访问您的Web服务。

  1. 编辑配置文件。

    vim /etc/apache2/sites-available/ssl.example.com.conf
    
  2. 在配置文件末尾添加以下内容:

    <VirtualHost *:80>
        ServerName ssl.example.com
        Redirect / https://ssl.example.com/
    </VirtualHost>
    

    修改后的内容如下图所示。
    图片

  3. 保存变更并退出配置文件。

  4. 检查配置文件是否有语法错误。

    apache2ctl configtest
    

    如果返回Syntax OK,表示无语法错误。如果有语法错误,可根据提示重新修改配置。

  5. 重新加载Apache服务。

    systemctl reload apache2
    
  6. 打开本地计算机上的浏览器,使用HTTP协议访问域名:http://ssl.example.com
    如果协议被自动转换为HTTPS,表示HTTP请求已强制跳转为HTTPS请求。