在 Linux 服务器上为 Apache 部署 SSL 证书并配置 HTTPS

Administrator
Administrator
发布于 2025-03-04 / 5 阅读
0
0

在 Linux 服务器上为 Apache 部署 SSL 证书并配置 HTTPS

前提条件

  • 一台已部署好网站的 Linux 服务器(例如 Ubuntu、CentOS)。-主页有课程
  • 已安装并配置 Apache 服务器。-主页有课程
  • 已申请的 SSL 证书(可以是阿里云或其他提供商的免费/付费 SSL 证书)。

步骤 1:申请 SSL 证书并下载文件

  1. 申请证书:在 SSL 证书服务提供商(例如阿里云)申请 SSL 证书,确保填写的域名正确,如 www.example.com*.example.com
    在阿里云的数字证书管理服务中,点击SSL证书管理,在个人测试证书中点击创建证书,按照提示填写信息,包括域名。

6046c06726be48ff8b2cc7c6f219623a[1].png
3. 下载证书:下载 Apache 格式的证书文件,解压后会得到以下三个文件:

  • example.key(私钥文件)
  • example.crt(证书文件)
  • example_chain.crt(证书链文件)
    个人测试证书中找到要部署的证书,点击后面的更多

2743f1ef2c5a48869ac888e10f33c3aa[1].png

如下图,点击下载,找到Apache后面的下载,下载后压缩包中包括:

  • *.key
  • *_chain.crt
  • *_public.crt

44d419484a78489b958387efc446c961[1].png

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

  1. 将解压后的证书文件通过 scp 或 FTP 等方式上传到服务器,存放在一个安全目录,例如 /etc/httpd/cert/。这个地址专门用来存放SSL证书,可以记下来。
    这里可以使用FileZilla软件与服务器文件进行交互操作,比较方便,具体操作方法可以搜一下,非常简单。
  2. 设置文件权限,保护私钥文件的安全:
    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 证书

  1. 打开 Apache 虚拟主机配置文件,通常在 /etc/apache2/sites-available//etc/httpd/conf.d/ 下。例如,编辑 example.conf
    sudo nano /etc/apache2/sites-available/example.conf
    
    如果目录下存在多个conf,不知道哪个在使用的话可以查看主页另一篇文章:《[菜鸟写的web教程]如何查找和管理 Apache 服务器的生效配置文件》
  2. 在文件中添加或修改如下内容,配置 HTTPS:
    <VirtualHost *:443>
        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 -----自己的路径和文件
    
        <Directory /var/www/html/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/example_error.log
        CustomLog ${APACHE_LOG_DIR}/example_access.log combined
    </VirtualHost>
    

这里需要注意,本系列课程中,前几篇文章里面这个文件中配置的端口是80,而HTTPS一般使用443。阿里云服务器中的安全策略中,需要打开443端口。

步骤 4:启用 SSL 模块并启用站点配置

  1. 启用 Apache 的 SSL 模块(如果未启用):
    sudo a2enmod ssl
    
  2. 启用新的虚拟主机配置:
    sudo a2ensite example.conf
    

步骤 5:重启 Apache

重启 Apache 服务以应用新的配置:

sudo systemctl restart apache2  # Ubuntu/Debian
sudo systemctl restart httpd    # CentOS/RHEL

步骤 6:检查 SSL 证书是否正常工作

  1. 在浏览器中访问 https://www.example.com,验证是否可以正常加载。
  2. 如果页面显示为“不安全”,请检查浏览器的开发者工具,是否存在“混合内容”警告或 SSL 配置问题。
    注意:本系列课程前期使用的是wordpress搭建网站,在后台设置中有地址和站点地址,需要修改为自己的域名。不然在打开子界面时,使用的还是http或者直接进入IP地址。

fb2940495ec7444bbbfb93b033aeb147[1].png

步骤 7:配置 HTTP 自动重定向到 HTTPS(可选)

为提高网站安全性,配置将所有 HTTP 请求重定向到 HTTPS:

  1. 编辑 Apache 的 80 端口配置:
    <VirtualHost *:80>
        ServerName www.example.com
        ServerAlias example.com
        Redirect permanent / https://www.example.com/
    </VirtualHost>
    
  2. 保存文件并重启 Apache 服务。

步骤 8:启用 HSTS(可选)

HSTS(HTTP Strict Transport Security)会强制浏览器始终通过 HTTPS 访问站点,进一步提高安全性:

  1. VirtualHost *:443 配置中添加以下行:
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    
  2. 重启 Apache 服务以应用更改。

常见问题解决

  1. 证书不匹配警告:检查 ServerNameServerAlias 是否与证书中包含的域名匹配。
  2. 混合内容警告:确保网站加载的所有资源都使用 HTTPS。
  3. 缓存问题:清除浏览器缓存或使用隐私模式重新访问网站。

完成

现在,你已经成功为 Apache 服务器配置了 SSL 证书,网站应能通过 https 安全访问!

e431404698bb4606a11f6705c4aff344[1].png


评论