在Debian 8服务器上安装让我们用Nginx加密免费TLS/SSL证书

  • 技术文档
  • 2022.03.24
  • 浏览:122

本指南介绍了如何使用Debian 8服务器上的Nginx服务器获取并安装Let's Encrypt free TLS/SSL证书。

安装Debian 8服务器上的加密客户端

Ubuntu16.04存储库已经有了让我们加密客户端。Debian测试库中也提供了该客户端。你们中的一些人可能会想,“哇,那么我们可以让jessie backports repo在Debian 8上安装Let's Encrypt client!”事实上,当我发现Debian 9存储库中包含Let’s Encrypt client时,我就是这么想的。

所以,让我们来开源。使用nano文本编辑器列出文件。

sudo nano /etc/apt/sources.list

然后在文件末尾添加以下行。

deb http://ftp.debian.org/debian jessie-backports main

然后更新本地包索引并安装letsencrypt。

sudo apt-get update  sudo apt-get install letsencrypt -t jessie-backports

使用独立插件获得免费的TLS/SSL证书

当我们使用独立插件应用Let's Encrypt的TLS/SSL证书时,letsencrypt客户端将临时启动一个Web服务器,该服务器监听端口80。因此,如果您之前安装了Nginx Web服务器,并且Nginx正在运行,那么您需要使用以下命令停止它,以释放端口80。

sudo systemctl stop nginx

sudo service nginx stop

然后发出以下命令以获取证书。

sudo letsencrypt certonly --email <your-email-address> -d <your-domain-name>

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

电子邮件地址用于紧急通知和丢失的密钥恢复。替换<;您的电子邮件地址>;你的真实电子邮件地址-d选项用于指定您的域名。替换<;你的域名>;用你的真实域名。您应该将域名指向Debian 8服务器的IP地址,否则域验证将失败。

系统将要求您选择身份验证方法。选择第二个选项并按Enter键。

Debian 8 Let

几秒钟之内,你就会看到下面这样的祝贺信息。

IMPORTANT NOTES:  - Congratulations! Your certificate and chain have been saved at    /etc/letsencrypt/live/your-domain-name/fullchain.pem. Your cert    will expire on 2016-08-21. To obtain a new version of the    certificate in the future, simply run Let's Encrypt again.  - If you like Let's Encrypt, please consider supporting our work by:     Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate    Donating to EFF: https://eff.org/donate-le

您的证书和链保存在/etc/letsencrypt/live/Your domain name/fullchain。佩姆。

使用Nginx安装TLS/SSL证书

如果尚未安装Nginx,请使用以下命令进行安装。

sudo apt-get install nginx

然后创建服务器块配置文件。

sudo nano /etc/nginx/conf.d/your-domain-name.conf

以下是Nginx的TLS/SSL配置示例。

server {   listen 80;   server_name www.yourdomain.com;   return 301 https://www.yourdomain.com$request_uri; } server {   listen 443 ssl;   server_name www.yourdomain.com;    ssl_protocols TLSv1.1 TLSv1.2;   ssl_certificate /etc/letsencrypt/live/www.yourdomain.com/fullchain.pem;   ssl_certificate_key /etc/letsencrypt/live/www.yourdomain.com/privkey.pem;    access_log /var/log/nginx/www.yourdomain.com.log;   root /var/www/html; }

保存并关闭文件。重启Nginx。

sudo systemctl restart nginx

sudo service nginx restart

使用Webroot插件获取TLS/SSL证书

停止Nginx服务器可能会给网站访问者带来不好的体验。以下步骤使用Webroot插件获取TLS/SSL证书,而无需停止Nginx服务器。

首先输入以下命令。

sudo letsencrypt certonly --email <your-email-address> -d <your-domain-name>

然后选择第一种身份验证方法。

Let

接下来,按Enter键输入Web根目录。

webroot plugin certbot

然后输入您的web根目录。两个常见的web根目录是/var/www/html和/usr/share/nginx/html/。

webroot authentication

几秒钟后,您的证书将由Let’s Encrypt颁发。

通过添加以下选项,可以自动完成上述过程。

--webroot -w /var/www/html/

--webroot告诉letsencrypt客户端使用webroot插件-w是--webroot路径的缩写/var/www/html/是一个常见的Web根目录。因此,您可以使用以下一个命令来获取TLS/SSL证书,而无需停止Nginx。

sudo letsencrypt certonly --email <your-email-address> -d <your-domain-name> --webroot -w /var/www/html

您可能需要在Nginx服务器配置文件中添加以下指令,以允许访问。我很熟悉目录。

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

续订让我们加密TLS/SSL证书

letsencrypt的配置目录是/etc/letsencrypt,在该目录下可以找到续订目录。在/etc/letsencrypt/renewal下有一些conf文件,它们定义了证书的更新方式。

运行以下命令在Debian 8服务器上测试续订过程:

sudo letsencrypt renew --dry-run

您会发现letsencrypt客户端使用的插件和选项与最初颁发证书时使用的插件和选项相同。这是默认行为。

要更改用于续订的插件或选项,必须编辑/etc/letsencrypt/renewal下的conf文件。

假设您使用独立插件获取证书,但现在您想使用Webroot插件更新证书,因为您不想停止Nginx,然后打开conf文件。

sudo nano /etc/letsencrypt/renewal/your-domain-name.conf

保持前四行不变,将更新参数更改为以下参数。

# Options used in the renewal process [renewalparams] authenticator = webroot installer = None account = 2d29325aa8757ab4198e96d1c7b46eb6 webroot_path = /var/www/html, [[webroot_map]] your-domain-name = /var/www/html

你的账号可以在/etc/letsencrypt/accounts/acme-v01上找到。应用程序编程接口。letsencrypt。org/directory/。

然后再次测试更新过程。

sudo letsencrypt renew --dry-run --webroot-path /var/www/html

您将看到它现在正在使用Webroot插件更新证书。

要开始真正的更新过程,只需删除--dry run选项。

sudo letsencrypt renew --webroot-path /var/www/html

上述命令将尝试续订30天内到期的证书。您可以使用以下命令打开root用户的crontab文件。

sudo crontab -e

创建一个cron作业。

0 5 * * * letsencrypt renew --webroot-path /var/www/html