如何使用 SSL 证书设置 Apache HTTP?

使用 SSL/TLS 证书保护你的 Apache 服务器

通过安装 SSL/TLS 证书,你配置的域名或 IP 地址将能够通过 HTTPS 安全访问。

让我们开始配置吧!

大致来说,我们将执行以下步骤:

  • 编译带有 SSL 模块的 Apache HTTP 2.4.5
  • 获取 SSL 证书
  • 配置 Apache 以支持 SSL

从源代码安装支持 SSL 的 Apache

要启用 SSL,Apache HTTP 必须在编译时包含 mod_ssl 模块。为了演示,我将使用一个来自 DigitalOcean 的 CentOS 7 虚拟机。

  • 以 root 用户身份登录你的 Linux 服务器,并下载最新版本的 Apache。
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .

注意:你可以在 这里 查看最新版本。

  • 使用 gunzip 命令解压下载的文件。
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • 你会看到一个新的文件夹 httpd-2.4.25
  • 进入该文件夹,执行以下配置命令:
./configure --enable-ssl –-enable-so

注意:如果在全新的服务器上执行此操作,你可能会遇到与 APR、PCRE 和 OpenSSL 相关的问题,可以查阅故障排除指南。

确保配置命令没有错误,然后使用 make 命令进行安装。

make
make install

如同往常,确保上述命令没有报错。至此,你已经安装了一个支持 SSL 的 Apache Web 服务器。

获取 SSL 证书

生成和获取由证书颁发机构签名的 SSL 证书有多种方法。

如果需要在内网 Web 服务器上部署 SSL,大多数组织都有内部证书颁发团队,你需要与他们联系。不过,你仍然需要生成 CSR(证书签名请求),这可以使用 OpenSSL 来完成。

如果你想保护面向互联网的 URL,你可以从 VeriSign、GoDaddy、Namecheap、 ZeroSSL 等机构购买,或者使用 Let’s Encrypt

Let’s Encrypt 是一个 Linux 基金会协作项目,提供免费的 SSL/TLS 证书。我将使用 Let’s Encrypt 为我的域名 Chandan.io 获取证书。

生成 CSR 的方法有很多,我发现最简单的方法是使用 “SSL For Free” 这个在线工具。

输入你要保护的 URL。

通过列出的方法之一验证域名所有权,并下载你的域名证书文件。

你将获得三个文件,稍后我们将使用它们来配置 Apache Web 服务器。

  • 密钥 (Key) – 这是你的密钥文件,不应与任何人共享。
  • 证书 (Certificate) – 这是你域名的实际 SSL 证书。
  • Ca_bundle – 签名者的根/中间证书。

将下载的文件传输到你的 Web 服务器。我们很快会用到它们。

Apache SSL 配置

最后一步是配置 Apache,使其可以通过 HTTPS 提供服务。

  • 登录你的 Apache Web 服务器。
  • 备份 httpd.conf 文件(默认位置在 /usr/local/apache2/conf/)。
  • 使用 vi 编辑器打开该文件,确保 mod_ssl 模块和 httpd-ssl.conf 文件存在并且没有被注释。
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

我们将使用 httpd-ssl.conf 文件来配置证书详细信息。确保其中包含以下正确的参数:

  • SSLCertificateFile – 你之前下载的证书 CRT 文件的路径。
  • SSLCertificateKeyFile – 你的私钥 .key 文件的路径。
  • SSLCertificateChainFileca_bundle.crt 文件的路径。

提示:你可以创建一个名为 ssl 的新文件夹,并将所有与证书相关的文件保存在其中。

  • 如有必要,进行备份,然后使用 vi 编辑器修改该文件。
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"

接下来,你需要配置 ServerName 指令。它通常是你的域名或 URL。

ServerName chandan.io
  • 保存文件并重启 Apache Web 服务器。
cd /usr/local/apache2/bin
./apachectl stop
./apachectl start

最后,你必须确保你的域名已映射到新配置的 Web 服务器 IP 地址。完成之后,尝试使用 HTTPS 访问你的域名。

如你所见,Chandan.io 可以通过我配置的证书以 HTTPS 方式访问。

以上步骤对于设置 SSL 证书至关重要。你还需要进一步调整 SSL,以加强和保护此处所述的配置。在上线之前,你可能还需要测试你的 Web 服务器的 SSL/TLS,以确保其不会暴露在常见的安全漏洞之下。

希望这篇文章能让你了解如何在 Apache Web 服务器上实现 SSL 证书,以便可以通过 HTTPS 访问你的 URL。

喜欢这篇文章吗?分享给其他人吧!