让我们在Arch Linux服务器上使用Nginx加密TLS / SSL证书

在本教程中,我们将研究如何在Arch Linux服务器上使用Nginx获取和安装免费的Let’s Encrypt TLS / SSL证书。

获取免费的加密TLS / SSL证书

首先,我们需要安装letencrypt客户端,该客户端在Arch Linux社区存储库中可用。 因此,运行此命令进行安装。

sudo pacman -S certbot

我们可以使用两个插件来获取Nginx Web服务器的证书:独立插件和Webroot。 我建议使用Webroot插件。 与独立插件相比,在获取和更新证书时,它具有以下两个优点。

  • 独立插件需要启动一个临时的独立Web服务器,这需要您停止Nginx。 使用Webroot插件,您不必停止Nginx。
  • 独立插件使用的域验证要求您将域名指向原始服务器的IP地址。 这意味着,如果您正在使用CloudFlare之类的CDN服务,则必须在获取和续订过程中将源服务器公开。 您无需使用Webroot插件。

Webroot插件通过在下面放置一个临时文件来验证您 your-web-root/.well-known/acme-challenge/

要使用Webroot插件获取证书,请运行以下命令。

sudo cerrbot certonly --webroot --email <your-email-address> -d www.example.com -d example.com -w /usr/share/nginx/example.com/

子命令 certonly 告诉letsencrypt客户端获取证书,但不要安装它,因为letsencrypt客户端在编写本文时不支持Nginx的自动配置。

--webroot 标志告诉letencrypt客户端使用Webroot插件。

将<您的电子邮件地址>替换为您的真实电子邮件地址。 用您的真实域名替换www.example.com和example.com。 您最多可以包含100个域名,只需添加另一个 -d 标记,后跟您的域名。

-w 是短的 --webroot-path/usr/share/nginx/example.com 是常见的Nginx Web根目录。

在几秒钟内,您应该看到如下所示的祝贺消息。

Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.example.com/fullchain.pem. Your cert
will expire on 2016-08-23. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.

如果在运行上述命令后看到403禁止错误,则可能是因为您的Nginx配置不允许访问隐藏文件。 启用访问 your-web-root/.well-known/acme-challenge,将以下指令添加到您的Nginx配置文件中。

location ~ /.well-known/acme-challenge {
    allow all;
}

然后重新加载Nginx配置。

sudo systemctl reload nginx

然后再次运行letsencrypt命令来获取您的证书。

安装证书

编辑您的Nginx配置文件。

sudo nano /etc/nginx/conf.d/your-site.conf

像打击一样更改此文件中的内容。

server {
  listen 80;
  server_name www.example.com;
  return 301 https://www.example.com$request_uri;
}
server {
  listen 443 ssl;
  server_name www.example.com;

  ssl_protocols TLSv1.1 TLSv1.2;
  ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;

  access_log /var/log/nginx/www.example.com.log;
  root /var/www/html;
....
}

保存并关闭文件。 然后测试并重新加载Nginx配置。

sudo nginx -t

sudo systemctl reload nginx

现在访问您的网站,您应该在地址栏中看到一个绿色的挂锁。

如果您正在使用CloudFlare之类的CDN服务,则可能需要在CDN控制面板中启用SSL。

自动续订您的证书

让我们将证书加密持续90天。 要续订证书,只需再次运行同一命令。 要自动续订证书,您可以编辑root用户的crontab。

sudo crontab -e

然后添加每月的Cron作业,如下所示。 再次,替换电子邮件地址和域名。

@monthly certbot renew --quiet

该命令将在每月的第一天00:00运行。

Sidebar