如何设置带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,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 – 私钥文件路径
- 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访问的思路。