最近更新时间:2023.09.22 16:31:34
首次发布时间:2022.11.03 20:34:32
证书签发后,您可以在火山引擎证书中心控制台下载证书。获得证书后,您必须将证书安装到服务器,才能使服务器支持HTTPS连接。本教程将指导您安装SSL证书到Apache服务器。
本教程以以下环境为例介绍相关的操作步骤:
服务器:
操作系统:Ubuntu 22.04 64位
Web服务程序:Apache/2.4.41 版本
Web服务器程序的安装目录:/etc/apache2
说明
服务器环境不同,可能导致实际配置与本文描述有差异。这种情况下,您需以实际环境为准,本文只作为参考。
示例域名:ssl.example.com
本教程将指导您修改apache2.conf
配置文件中的<VirtualHost>
配置,为域名开启443端口监听并关联对应证书。
具体步骤如下:
对于已签发的SSL证书,您可以从证书中心控制台下载适配Apache服务器的证书压缩包到本地计算机。关于下载证书压缩包的具体操作,请参见下载证书。
下载Apache证书压缩包后,解压缩证书压缩包到本地计算机。证书压缩包名称为<CommonName>_apache
。其中,<CommonName>
表示证书颁发给的域名。解压缩后,您将获得以下证书文件:
<CommonName>_chain.crt
:证书链文件。
<CommonName>_public.crt
:证书文件。
<CommonName>.key
:私钥文件。
说明
如果您的SSL证书请求使用了您手动上传的CSR,并且您没有提供私钥,那么解压缩获得的文件不包含私钥文件。这种情况下,您需要自行准备私钥文件,用于完成后续配置。
上传本地文件到远程服务器的方式有很多,本教程以使用scp
命令为例,介绍如何将证书从本地Windows计算机上传到Apache服务器。
远程登录Apache服务器。
在Apache安装目录,创建一个用于存放证书的文件夹,命名为cert
。
Apache版本不同,安装目录可能不同,具体以您使用的Apache版本为准。本示例中,Apache安装目录为 /etc/apache2
。
cd /etc/apache2 mkdir cert
说明
您可以使用find / -name apache2.conf
命令,查询apache2.conf
配置文件所在路径。该路径即为Apache安装目录。
打开本地计算机的Shell工具。
以Windows 10操作系统为例,在桌面左下角的开始图标上单击鼠标右键,然后单击Windows PowerShell。
使用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
验证文件上传成功。
在Apache服务器,执行ll /etc/apache2/cert
命令,列举cert
目录下的文件。
如果文件列表中包含证书链文件、证书文件和私钥文件,表示证书已上传成功。
启用mod_ssl
模块。
在Apache中,mod_ssl
模块用于启用HTTPS。
a2enmod ssl
重新加载Apache服务。
启用mod_ssl
模块后,您需要重启Apache使配置生效。
systemctl restart apache2
新增<VirtualHost>
配置。
vim /etc/apache2/sites-available/ssl.example.com.conf
在配置文件中添加以下内容:
<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
编辑页。启用新增的<VirtualHost>
配置。
a2ensite ssl.example.com.conf
检查配置文件是否有语法错误。
apache2ctl configtest
如果返回Syntax OK
,表示无语法错误。如果有语法错误,您可根据提示重新修改配置。
重新加载Apache服务。
systemctl reload apache2
注意
进行验证操作前,请确保服务器已开放443端口。如果您的服务器因安全组、防火墙等策略,未允许443端口访问,请先修改对应策略。
打开本地计算机上的浏览器,使用HTTPS格式地址访问域名:https://ssl.example.com
。
成功建立连接后,在浏览器地址栏出现锁状图标,表示连接是安全的。
您可以单击锁状图标,查看连接详情,例如获取证书信息等。
网站启用HTTPS通信后,您还可以修改<VirtualHost>
配置,使终端用户的HTTP请求强制跳转为HTTPS请求,确保终端用户总是通过HTTPS协议访问您的Web服务。
编辑配置文件。
vim /etc/apache2/sites-available/ssl.example.com.conf
在配置文件末尾添加以下内容:
<VirtualHost *:80> ServerName ssl.example.com Redirect / https://ssl.example.com/ </VirtualHost>
修改后的内容如下图所示。
保存变更并退出配置文件。
检查配置文件是否有语法错误。
apache2ctl configtest
如果返回Syntax OK
,表示无语法错误。如果有语法错误,您可根据提示重新修改配置。
重新加载Apache服务。
systemctl reload apache2
打开本地计算机上的浏览器,使用HTTP格式地址访问域名:http://ssl.example.com
。
如果地址自动被转换为HTTPS格式,则表示HTTP请求已强制跳转为HTTPS请求。