[菜鸟写的web教程]在 Linux 服务器上为 Apache 部署 SSL 证书并配置 HTTPS
文章目录
- 前提条件
- 步骤 1:申请 SSL 证书并下载文件
- 步骤 2:上传证书文件到服务器
- 步骤 3:配置 Apache 使用 SSL 证书
- 步骤 4:启用 SSL 模块并启用站点配置
- 步骤 5:重启 Apache
- 步骤 6:检查 SSL 证书是否正常工作
- 步骤 7:配置 HTTP 自动重定向到 HTTPS(可选)
- 步骤 8:启用 HSTS(可选)
- 常见问题解决
- 完成
前提条件
- 一台已部署好网站的 Linux 服务器(例如 Ubuntu、CentOS)。-主页有课程
- 已安装并配置 Apache 服务器。-主页有课程
- 已申请的 SSL 证书(可以是阿里云或其他提供商的免费/付费 SSL 证书)。
步骤 1:申请 SSL 证书并下载文件
- 申请证书:在 SSL 证书服务提供商(例如阿里云)申请 SSL 证书,确保填写的域名正确,如
www.example.com
或*.example.com
。
在阿里云的数字证书管理服务中,点击SSL证书管理,在个人测试证书中点击创建证书,按照提示填写信息,包括域名。
- 下载证书:下载
Apache
格式的证书文件,解压后会得到以下三个文件:example.key
(私钥文件)example.crt
(证书文件)example_chain.crt
(证书链文件)
在个人测试证书中找到要部署的证书,点击后面的更多。
如下图,点击下载,找到Apache后面的下载,下载后压缩包中包括:
- *.key
- *_chain.crt
- *_public.crt
步骤 2:上传证书文件到服务器
- 将解压后的证书文件通过
scp
或 FTP 等方式上传到服务器,存放在一个安全目录,例如/etc/httpd/cert/
。这个地址专门用来存放SSL证书,可以记下来。
这里可以使用FileZilla软件与服务器文件进行交互操作,比较方便,具体操作方法可以搜一下,非常简单。 - 设置文件权限,保护私钥文件的安全:
sudo chmod 644 /etc/httpd/cert/example.crt /etc/httpd/cert/example_chain.crt sudo chmod 600 /etc/httpd/cert/example.key
步骤 3:配置 Apache 使用 SSL 证书
- 打开 Apache 虚拟主机配置文件,通常在
/etc/apache2/sites-available/
或/etc/httpd/conf.d/
下。例如,编辑example.conf
:
如果目录下存在多个conf,不知道哪个在使用的话可以查看主页另一篇文章:《[菜鸟写的web教程]如何查找和管理 Apache 服务器的生效配置文件》sudo nano /etc/apache2/sites-available/example.conf
- 在文件中添加或修改如下内容,配置 HTTPS:
ServerAdmin webmaster@example.com ServerName www.example.com-----自己的域名 ServerAlias example.com-----自己的域名 DocumentRoot /var/www/html/ SSLEngine on SSLCertificateFile /etc/httpd/cert/example.crt-----自己的路径和文件 SSLCertificateKeyFile /etc/httpd/cert/example.key-----自己的路径和文件 SSLCertificateChainFile /etc/httpd/cert/example_chain.crt -----自己的路径和文件 Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/example_error.log CustomLog ${APACHE_LOG_DIR}/example_access.log combined
这里需要注意,本系列课程中,前几篇文章里面这个文件中配置的端口是80,而HTTPS一般使用443。阿里云服务器中的安全策略中,需要打开443端口。
步骤 4:启用 SSL 模块并启用站点配置
- 启用 Apache 的 SSL 模块(如果未启用):
sudo a2enmod ssl
- 启用新的虚拟主机配置:
sudo a2ensite example.conf
步骤 5:重启 Apache
重启 Apache 服务以应用新的配置:
sudo systemctl restart apache2 # Ubuntu/Debian
sudo systemctl restart httpd # CentOS/RHEL
步骤 6:检查 SSL 证书是否正常工作
- 在浏览器中访问
https://www.example.com
,验证是否可以正常加载。 - 如果页面显示为“不安全”,请检查浏览器的开发者工具,是否存在“混合内容”警告或 SSL 配置问题。
注意:本系列课程前期使用的是wordpress搭建网站,在后台设置中有地址和站点地址,需要修改为自己的域名。不然在打开子界面时,使用的还是http或者直接进入IP地址。
步骤 7:配置 HTTP 自动重定向到 HTTPS(可选)
为提高网站安全性,配置将所有 HTTP 请求重定向到 HTTPS:
- 编辑 Apache 的 80 端口配置:
ServerName www.example.com ServerAlias example.com Redirect permanent / https://www.example.com/ - 保存文件并重启 Apache 服务。
步骤 8:启用 HSTS(可选)
HSTS(HTTP Strict Transport Security)会强制浏览器始终通过 HTTPS 访问站点,进一步提高安全性:
- 在
VirtualHost *:443
配置中添加以下行:Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
- 重启 Apache 服务以应用更改。
常见问题解决
- 证书不匹配警告:检查
ServerName
和ServerAlias
是否与证书中包含的域名匹配。 - 混合内容警告:确保网站加载的所有资源都使用 HTTPS。
- 缓存问题:清除浏览器缓存或使用隐私模式重新访问网站。
完成
现在,你已经成功为 Apache 服务器配置了 SSL 证书,网站应能通过 https
安全访问!