如何使用Nginx在CentOS 8上安装Let’s Encrypt

在本教程中,我们将说明如何在以Nginx作为Web服务器的CentOS 8 VPS上安装免费的Let’s Encrypt SSL证书。

Let’s Encrypt是一个免费的开源非营利证书颁发机构,它为网站提供免费的SSL证书以启用TLS加密。 它是由Internet Security Research Group(ISRG)开发的,并受到所有主要浏览器的信任。 它用于自动执行证书创建,验证,签名,实施和更新安全网站证书的过程。

Let’s Encrypt的主要目的是促进Web上SSL的使用,并在整个Internet上建立加密连接,从而使每个人在此过程中更加安全。 该证书的有效期仅为90天,因此您需要手动续订该证书或设置自动续订系统(默认情况下应启用)。

目前,“让我们加密”支持针对Apache,Nginx,Plex和HAproxy的自动证书颁发,这几乎涵盖了每个人的用例。 让我们从安装指南开始。

先决条件

  • 就本教程而言,我们将使用CentOS 8 VPS。
  • 还需要完全SSH根访问权限或具有sudo特权的用户。 默认情况下,我们的所有VPS都具有root访问权限,无需额外费用。
  • 有效的域名指向您的VPS IP地址。

步骤1:登录并更新程序包

首先,我们将需要使用SSH登录到服务器。 您可以通过输入以下命令来做到这一点:

ssh [email protected]_Address -p Port_Number

如果不使用root用户,请记住用用户名替换“ root”。 根据服务器的IP地址和SSH端口号更改“ IP_Address”和“ Port_Number”。 默认的SSH端口号是22。

登录后,应将所有软件包更新为最新的可用版本。

dnf update -y

更新完成后,请重新启动系统以应用更改。

步骤2:安装Nginx和PHP

首先,通过运行以下命令安装Nginx Web服务器和PHP:

dnf install nginx php php-fpm php-cli -y

安装完所有软件包后,启动Nginx和PHP-FPM服务,并使用以下命令在启动时启动它们:

systemctl start nginx
systemctl enable nginx
systemctl start php-fpm
systemctl enable php-fpm

步骤3:配置PHP-FPM

默认情况下,PHP-FPM配置为以Apache用户和组身份运行。 在本教程中,我们将使用Nginx Web服务器。 这意味着您将需要配置PHP-FPM以Nginx用户和组的身份运行。

为此,请编辑PHP-FPM配置文件:

nano /etc/php-fpm.d/www.conf

从更改用户和组的值 apachenginx, 如下所示:

user = nginx
group = nginx

完成后保存并关闭文件。 然后,重新启动PHP-FPM服务以应用更改:

systemctl restart php-fpm

步骤4:创建一个Nginx虚拟主机

在开始之前,为Nginx创建一个示例网站。

mkdir /var/www/html/yourdomain.com

接下来,在网站目录中创建一个示例PHP文件,并使用您喜欢的文本编辑器将其打开:

nano /var/www/html/yourdomain.com/index.php

将以下行添加到文件中:

<?php
phpinfo();
?>

保存并关闭文件,然后将网站的所有权设置为 nginx 使用以下命令:

chown -R nginx:nginx /var/www/html/yourdomain.com/

接下来,创建一个新的Nginx虚拟主机配置文件,该文件将为您的网站提供服务:

nano /etc/nginx/conf.d/yourdomain.com.conf

添加以下行:

server {
server_name yourdomain.com;
root /var/www/html/yourdomain.com;
location / {
index index.php;
}
access_log /var/log/nginx/yourdomain.access.log;
error_log /var/log/nginx/yourdomain.error.log;
location ~ .php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

确保您替换的所有实例 yourdomain 与您的注册域名。

保存并关闭文件,然后使用以下命令检查Nginx配置文件是否存在语法错误:

nginx -t

您应该看到以下输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

接下来,重新启动Nginx服务以应用配置更改:

systemctl restart nginx

您的Web服务器现在应该已启动并正在运行。

步骤5:安装Certbot客户端

为了为您的网站生成一个“让我们加密”证书,您将需要在系统中安装Certbot客户端。

Certbot是一种命令行工具,用于简化获取和续订我们网站的SSL证书的过程。

默认情况下,Certbot软件包在CentOS标准存储库中不可用。 因此,您需要从供应商的网站下载它。

您可以使用以下命令下载并安装它:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

安装Certbot之后,请运行以下命令以获取并安装您网站的SSL证书:

certbot-auto --nginx -d yourdomain.com

上面的命令将首先在服务器上安装所有必需的依赖项。 安装后,将要求您提供一个电子邮件地址并接受服务条款,如下所示:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): [email protected]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N

如果您不希望将电子邮件共享给EFF,请键入N,然后按Enter继续。 安装证书后,您应该看到以下输出:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for yourdomain.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/yourdomain.com.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/yourdomain.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://yourdomain.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=yourdomain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/yourdomain.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/yourdomain.com/privkey.pem
Your cert will expire on 2020-08-30. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again with the "certonly" option. To non-interactively renew *all*
of your certificates, run "certbot-auto renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le
- We were unable to subscribe you the EFF mailing list because your
e-mail address appears to be invalid. You can try again later by
visiting https://act.eff.org.

现在,您的网站已使用“让我们加密SSL”保护。 您可以使用在线工具测试SSL证书。

第6步:访问您的网站

现在,打开您的Web浏览器并使用URL安全地访问您的网站 https://yourdomain.com

您应该看到以下页面:

如何使用Nginx在CentOS 8上安装Let's Encrypt

在上一页中,您应该能够看到该站点已正确地保护,通常在地址栏的左边缘带有绿色的锁定图标。

步骤7:设置自动续订

现在我们已经在CentOS 8 VPS上安装了Let’s Encrypt,我们需要确保我们的证书保持更新和有效。

默认情况下,“加密”证书有效期为90天。 建议您在证书过期之前对其进行更新,因为过期的证书会在用户尝试访问您的网站时向用户发出安全警告。

您可以使用以下命令手动测试续订过程。

certbot-auto renew --dry-run

上面的命令将自动检查当前安装的证书,如果它们距离有效期不到30天,则尝试更新它们。

您还可以添加一个cronjob以每天两次自动运行以上命令。

为此,请使用以下命令编辑crontab文件:

crontab -e

添加以下行:

* */12 * * *   root /usr/local/bin/certbot-auto renew >/dev/null 2>&1

如果一天两次的时间太频繁,可以通过调整最左侧的值来始终更改此cronjob的间隔。

保存并关闭文件。 现在,您的证书将定期更新。 恭喜你! 您现在已经使用Nginx在CentOS 8服务器上安装了Let’s Encrypt。

使用所需的所有插件和功能来建立网站可能会花费大量时间和精力,而您可能会花费大量时间和精力来开展业务。 如果您使用我们托管的CentOS 8托管服务之一,我们将为您完成所有繁琐的工作。 从服务器维护到安装和配置请求,我们涵盖了使服务器保持最佳状态所需的一切,而无需任何额外费用。

如果本教程帮助您在CentOS 8 VPS上使用SSL配置Nginx网站,请考虑在“评论”部分中发表评论,或使用我们的共享快捷方式在社交媒体上分享此帖子。 谢谢。

Sidebar