linux学习

在Apache服务器上安装SSL证书

您可以在Apache服务器上安装SSL证书,实现通过HTTPS安全访问Web服务器。本文介绍如何为Apache服务器安装SSL证书。

本文以CentOS操作系统、Apache 2.4.7为例介绍。

前提条件:

  • 已通过数字证书管理服务控制台签发证书。

  • SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射。

  • Apache服务器已安装mod_ssl.so模块(启用SSL功能)。

  • 如未安装,可执行yum install -y mod_ssl命令安装。安装后,可执行httpd -M | grep 'ssl'检查mod_ssl.so是否安装成功。

步骤一:下载SSL证书

系统生成或选择已有的CSR

  • 证书文件(CRT格式):默认以证书绑定域名_public命名。CRT格式的证书文件采用Base64-encoded编码的文本文件。

  • 证书链文件(CRT格式):默认以证书绑定域名_chain命名。

  • 私钥文件(KEY格式):证书文件的密钥,默认以证书绑定域名命名。

步骤二:在Apache服务器安装证书

1、执行以下命令,在Apache的安装目录下创建一个用于存放证书的cert目录。

# 进入Apache的安装目录
cd /etc/httpd/ #使用yum安装Apache的默认安装目录。如果您手动修改过该目录或使用其他方式安装的Apache,请根据实际配置调整。

# 创建cert目录
mkdir cert #创建证书目录,命名为cert。

2、将证书文件和私钥文件上传到Apache服务器的证书目录(/etc/httpd/cert)

3、编辑Apache配置文件httpd.conf和ssl.conf,修改与证书相关的配置。

​ *找到LoadModule ssl_module modules/mod_ssl.so(用于加载mod_ssl.so模块启用SSL服务) 和Include conf.modules.d/.conf(用于加载SSL配置目录),并检查是否被注释,如果被注释,请删除#注释。**

提醒:由于操作系统以及Apache安装方式不同,以上文件所处的位置也不同。可能出现在Apache目录的以下位置:

conf.modules.d/00-ssl.conf:本文中LoadModule ssl_module modules/mod_ssl.so位于该配置文件下。

*httpd.conf:本文中Include conf.modules.d/.conf位于该配置文件下。**

http-ssl.conf:

如果仍未找到以上参数,请确认您的Apache服务器中是否已经安装mod_ssl.so模块。如未安装,可执行yum install -y mod_ssl命令安装,安装后,可执行httpd -M | grep 'ssl'命令检查mod_ssl.so是否安装成功。

4、执行以下命令,打开ssl.conf配置文件。

vim /etc/httpd/conf.d/ssl.conf

在ssl.conf配置文件中,定位到以下参数,按照中文注释修改。

<VirtualHost *:443> 
 ServerName #修改为申请证书时绑定的域名。 
 SSLCertificateFile cert/domain_name_public.crt # 将domain_name_public.crt替换成您证书文件名。
 SSLCertificateKeyFile cert/domain_name.key # 将domain_name.key替换成您证书的密钥文件名。
 SSLCertificateChainFile cert/domain_name_chain.crt # 将domain_name_chain.crt替换成您证书的密钥文件名;证书链开头如果有#字符,请删除。

 #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
 #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
 #SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
 #SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。
</VirtualHost>

#如果证书包含多个域名,复制VirtualHost参数,并将ServerName修改为第二个域名。 
<VirtualHost *:443> 
 ServerName #修改为申请证书时绑定的第二个域名。 
 SSLCertificateFile cert/domain_name2_public.crt # 将domain_name2替换成您申请证书时的第二个域名。
 SSLCertificateKeyFile cert/domain_name2.key # 将domain_name2替换成您申请证书时的第二个域名。
 SSLCertificateChainFile cert/domain_name2_chain.crt # 将domain_name2替换成您申请证书时的第二个域名;证书链开头如果有#字符,请删除。

 SSLEngine on 
 SSLHonorCipherOrder on
 #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
 #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
 #SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
 #SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。
</VirtualHost>

可选:修改conf/httpd.conf文件,设置HTTP请求自动跳转HTTPS

在httpd.conf文件中添加以下重定向代码。

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

5、重启Apache服务器使SSL配置生效。

# 停止apache服务
systemctl stop httpd
# 开启apache服务
systemctl restart httpd

步骤三:验证SSL证书是否安装成功

证书安装完成后,您可通过访问证书的绑定域名验证该证书是否安装成功。

https://yourdomain   #需要将yourdomain替换成证书绑定的域名。

留言

您的邮箱地址不会被公开。 必填项已用 * 标注