如何设置带SSL证书的Apache HTTP服务器?

让我们使用SSL/TLS证书保护Apache。

一旦证书被应用,配置的域名/IP将可以通过HTTPS访问。

让我们开始吧。

总体来说,我们将执行以下步骤。

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

从源代码安装带有SSL的Apache

要配置SSL,Apache HTTP必须使用mod_ssl进行编译。我将使用CentOS 7虚拟机 Digital Ocean 来演示。

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

注意:您可以 check here 获取最新版本。

  • 使用gunzip命令解压缩
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • 您将得到一个名为“httpd-2.4.25”的新文件夹
  • 进入文件夹并执行以下配置命令
./configure --enable-ssl –-enable-so

注意:如果您在全新的服务器上执行此操作,可能会遇到与APR、PCRE、OpenSSL相关的问题,您可以参考 troubleshooting guide

确保您在上述配置命令中没有收到任何错误提示,然后使用make命令进行安装。

make 
make install

和往常一样,确保上述命令没有出现任何错误。这样您就安装了支持SSL的Apache web服务器。

获取SSL证书

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

如果您希望在Intranet Web服务器中实施SSL,那么大多数组织都有一个内部证书发行团队,所以您需要与他们核实。但是您仍然需要生成CSR(证书签名请求),可以使用 OpenSSL 进行操作。

但是,如果您希望保护一个 面向互联网的URL,那么您可以从VeriSign,GoDaddyNamecheapZeroSSL等处购买证书,或者从 Let’s Encrypt 获取免费证书。

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

生成CSR有多种方法,但我发现使用“SSL For FREE”在线工具是最简单的方法。

输入您想要保护的URL

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

您将获得三个文件,我们将在下一步中使用它们来配置Apache Web服务器。

  1. key – 这是您的密钥文件,不应该公开共享
  2. Certificate – 您的域名的实际SSL证书
  3. 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文件来配置证书详细信息。您需要确保它存在正确的参数。

  1. SSLCertificateFile – 您之前下载的证书文件路径CRT
  2. SSLCertificateKeyFile – 私钥文件路径
  3. SSLCertificateChainFile – ca_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以harden and secure which I explained here。在正式上线之前,您可能还希望进行test your web server SSL/TLS,以确保它不会受到常见安全漏洞的威胁。

我希望这给您提供了在Apache Web服务器上实现SSL证书以使URL通过HTTPS访问的思路。

类似文章