如何在 Ubuntu 和 Debian 上使用免费的 Let's Encrypt SSL 证书保护 Apache
您有一个新注册的域名,并且您的网络服务器使用您颁发的SSL自签名证书运行,这会导致您的客户在访问该域名时由于证书生成的错误而感到头痛吗?您的预算有限,却无力购买受信任的 CA 颁发的证书?这时,Let’s Encrypt 软件登场并拯救了世界。
如果您想在 RHEL、CentOS 上安装 Let's Encrypt for Apache 或 Nginx、Fedora 或 Ubuntu 和 Debian,请遵循以下指南:
设置 Let's Encrypt 以保护 RHEL 和 CentOS 7/6 上的 Apache
在 Ubuntu 和 Debian 上设置 Let’s Encrypt 以保护 Nginx
Let's Encrypt 是一个证书颁发机构 (CA),可帮助您获取您所需的免费 SSL/TLS 证书服务器安全运行,为您的用户提供流畅的浏览体验,没有任何错误。
测试样本环境
对于 Apache 网络服务器来说,生成证书所需的所有步骤大部分都是自动化的。但是,尽管您使用了 Web 服务器软件,但某些步骤必须手动完成,并且必须手动安装证书,特别是在您的网站内容由 Nginx 守护程序提供服务的情况下。
本教程将指导您如何在 Ubuntu 或 Debian 上安装 Let's Encrypt 软件、为您的域生成并获取免费证书以及如何您可以在 Apache 和 Nginx Web 服务器中手动安装证书。
要求
- 具有有效
A
记录的公共注册域名,可指向您的服务器外部 IP 地址。如果您的服务器位于防火墙后面,请采取必要的措施,通过在路由器端添加端口转发规则来确保您的服务器可以在全球范围内从互联网访问。 - 安装 Apache Web 服务器并启用 SSL 模块并启用虚拟托管,以防您托管多个域或子域。
第1步:安装Apache并启用SSL模块
1. 如果您的计算机上尚未安装 Apache Web 服务器,请发出以下命令来安装 apache 守护程序。
sudo apt-get install apache2
2. 在 Ubuntu 或 Debian 上激活 Apache Web 服务器的 SSL 模块非常简单。通过发出以下命令启用 SSL 模块并激活 apache 默认 SSL 虚拟主机:
sudo a2enmod ssl
sudo a2ensite default-ssl.conf
sudo service apache2 restart
or
sudo systemctl restart apache2.service
访问者现在可以通过 HTTPS 协议访问您的域名。但是,由于您的服务器自签名证书不是由受信任的证书颁发机构颁发的,因此其浏览器上将显示错误警报,如下图所示。
https://yourdomain.com
第 2 步:安装免费的 Let’s Encrypt 客户端
3. 为了在您的服务器上安装 Let’s Encrypt 软件,您需要在系统上安装 git 软件包。发出以下命令来安装 git 软件:
sudo apt-get -y install git
4. 接下来,从系统层次结构中选择一个要在其中克隆 Let’s Encrypt git 存储库的目录。在本教程中,我们将使用 /usr/local/
目录作为 Let’s Encrypt 的安装路径。
切换到 /usr/local
目录并通过发出以下命令安装 LetsEncrypt 客户端:
cd /usr/local
sudo git clone https://github.com/letsencrypt/letsencrypt
步骤 4:为 Apache 生成 SSL 证书
5. 借助 Apache 插件,获取 Apache SSL 证书的过程是自动化的。通过针对您的域名发出以下命令来生成证书。提供您的域名作为 -d
标志的参数。
cd /usr/local/letsencrypt
sudo ./letsencrypt-auto --apache -d your_domain.tld
例如,如果您需要证书在多个域或子域上运行,请在基本域名后为每个额外的有效 DNS 记录使用 -d
标志添加它们。
sudo ./letsencrypt-auto --apache -d your_domain.tld -d www. your_domain.tld
6. 同意许可证,输入用于恢复的电子邮件地址,并选择客户端是否可以使用 HTTP 协议(安全和不安全)浏览您的域,或将所有非安全请求重定向到 HTTPS。
7.安装过程成功完成后,您的控制台上会显示一条祝贺消息,通知您到期日期以及如何测试配置,如下面的屏幕截图所示。
现在您应该能够通过简单的目录列表在 /etc/letsencrypt/live
目录中找到您的证书文件。
sudo ls /etc/letsencrypt/live
8.最后,要验证您的 SSL 证书的状态,请访问以下链接。相应地替换域名。
https://www.ssllabs.com/ssltest/analyze.html?d=your_domain.tld&latest
此外,访问者现在可以使用 HTTPS 协议访问您的域名,而他们的 Web 浏览器中不会出现任何错误。
第 4 步:自动续订可加密证书
9. 默认情况下,Let’s Encrypt 机构颁发的证书有效期为 90 天。为了在到期日期之前续订证书,您必须使用与之前相同的标志和参数再次手动运行客户端。
sudo ./letsencrypt-auto --apache -d your_domain.tld
或者如果有多个子域:
sudo ./letsencrypt-auto --apache -d your_domain.tld -d www. your_domain.tld
10. 使用 Linux Schedule cron 守护程序,证书续订过程可以在到期日期前 30 天内自动运行。
sudo crontab -e
仅使用一行在 crontab 文件末尾添加以下命令:
0 1 1 */2 * cd /usr/local/letsencrypt && ./letsencrypt-auto certonly --apache --renew-by-default --apache -d domain.tld >> /var/log/domain.tld-renew.log 2>&1
11.有关 Let's Encrypt 软件的续订域配置文件的详细信息可以在 /etc/letsencrypt/renewal/
目录中找到。
cat /etc/letsencrypt/renewal/caeszar.tk.conf
您还应该检查文件 /etc/letsencrypt/options-ssl-apache.conf
以查看 Apache Web 服务器的新 SSL 配置文件。
12. 另外,Let’s encrypt apache 插件会修改网络服务器配置中的一些文件。为了检查哪些文件已被修改,请列出 /etc/apache2/sites-enabled
目录的内容。
ls /etc/apache2/sites-enabled/
sudo cat /etc/apache2/sites-enabled/000-default-le-ssl.conf
目前为止就这样了!下一个系列教程将讨论如何在 Ubuntu 和 Debian< 上为 Nginx 网络服务器获取并安装 Let's Encrypt 证书/strong> 以及 CentOS 上。