使用 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
文件的路径。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,以加强和保护此处所述的配置。在上线之前,你可能还需要测试你的 Web 服务器的 SSL/TLS,以确保其不会暴露在常见的安全漏洞之下。
希望这篇文章能让你了解如何在 Apache Web 服务器上实现 SSL 证书,以便可以通过 HTTPS 访问你的 URL。
喜欢这篇文章吗?分享给其他人吧!