安全Nginx与免费让我们在Ubuntu 14.04和Debian 8加密SSL证书

在本文中,我们将讨论如何生成和安装一个免费的SSL / TLS证书由Let's Encrypt CA发布的Nginx webserver在Ubuntu 14.04或Debian 8。

以下有关Apache的SSL以前咱们加密教程,在这篇文章中,我们将讨论如何生成并安装让我们加密CANginx的网络服务器在Ubuntu 14.04发布了免费的SSL / TLS证书(也适用于其他的Ubuntu发行版)或Debian 8

也阅读
  1. 安全Apache与免费让我们加密在Ubuntu和Debian
  2. 安装让我们加密SSL以在RHEL和CentOS上保护Apache
测试示例环境
安装让加密在Ubuntu和Debian上保护Nginx

安装让加密在Ubuntu和Debian上保护Nginx

要求

  1. 用有效的DNS一个注册的域名A记录指向回你的服务器的IP地址。
  2. 已安装的Nginx Web服务器启用了SSL和Vhost,以防您计划托管多个域或子域。

第1步:安装Nginx Web服务器

1.在第一步安装Nginx的网络服务器,如果尚未安装,通过发出以下命令:

$ sudo apt-get install nginx
在Ubuntu 14.04和Debian 8上安装Nginx Web Server

在Ubuntu 14.04和Debian 8上安装Nginx Web Server

第2步:为Nginx生成一个让我们加密SSL证书

2.在生成免费的SSL / TLS证书,安装在让我们的加密软件/usr/local/通过发出以下命令使用Git客户端的帮助文件系统层次:

$ sudo apt-get -y install git
$ cd /usr/local/
$ sudo git clone https://github.com/letsencrypt/letsencrypt

3.虽然获得了Nginx的证书的过程是自动的,你仍然可以手动创建和安装使用让我们的加密独立插件Nginx的免费SSL证书。

此方法需要80端口不能在您的系统上使用了很短的时间段,而让我们的客户端进行加密生成证书之前验证服务器的身份。

如果您正在运行Nginx,请通过发出以下命令停止服务。

$ sudo service nginx stop

如果你正在运行的绑定端口80上停止服务以及其他服务。

4.确认端口80是运行免费的netstat命令

$ sudo netstat -tlpn | grep 80
检查Linux中的当前监听端口

检查Linux中的当前监听端口

5.现在是时候来运行letsencrypt为了获得一个SSL证书。 让我们的加密/ usr /本地/ letsencrypt系统路径中找到安装目录,并通过提供certonly运行letsencrypt-auto命令--standalone选项和-d标志为每个域或子域要生成一个证书。

$ cd /usr/local/letsencrypt
$ sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld 
获取让我们加密SSL证书

获取让我们加密SSL证书

6.输入将由咱们加密丢失键恢复或紧急通知所使用的电子邮件地址。

请输入电邮地址

请输入电邮地址

7.按Enter键与许可中的条款。

接受Letsencrypt协议

接受Letsencrypt协议

8.最后,如果一切顺利,类似的截图信息下面应该出现在终端控制台上。

Letsencrypt安装完成

Letsencrypt安装完成

第3步:安装让我们在Nginx中加密SSL证书

9.现在,您的SSL证书已经生成,我们开始配置Web服务器Nginx的使用它。 新SSL证书都放在/etc/letsencrypt/live/一个域名命名的目录下。 运行ls命令列出您的域颁发的证书文件。

$ sudo ls /etc/letsencrypt/live/
$ sudo ls -al /etc/letsencrypt/live/caeszar.tk
Letsencrypt SSL证书

Letsencrypt SSL证书

10.接下来,打开/etc/nginx/sites-available/default使用文本编辑器文件,并在第一注释行指定SSL块的开头后添加以下块。 使用以下屏幕截图作为指导。

$ sudo nano /etc/nginx/sites-enabled/default

Nginx块摘录:

# SSL configuration
#
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/caeszar.tk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/caeszar.tk/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_dhparam /etc/nginx/ssl/dhparams.pem;
配置Nginx使用让我们加密SSL

配置Nginx使用让我们加密SSL

相应地替换SSL证书的域名值。

11.在下一步产生在/ etc / nginx的/ SSL /目录很强的Diffie-Hellman密码,以便通过运行以下命令来保护你的服务器对僵局的攻击。

$ sudo mkdir /etc/nginx/ssl
$ cd /etc/nginx/ssl
$ sudo openssl dhparam -out dhparams.pem 2048
为Nginx生成Diffie Hellman密码

为Nginx生成Diffie Hellman密码

12.最后,重新启动Nginx的守护进程,以反映变化。

$ sudo systemctl restart nginx

并通过访问以下网址测试您的SSL证书。

https://www.ssllabs.com/ssltest/analyze.html
检查Nginx允许加密SSL证书

检查Nginx允许加密SSL证书

第4步:自动续订让我们加密Nginx证书

13. 让我们加密CA颁发的证书的有效期为90天。 为了自动续订到期日之前创建的文件ssl-renew.sh在bash脚本/usr/local/bin/目录,内容如下。

$ sudo nano /usr/local/bin/ssl-renew.sh

添加以下内容ssl-renew.sh文件。

#!/bin/bash
cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d your_domain.tld
sudo systemctl reload nginx
exit 0
自动续订Nginx允许加密SSL证书

自动续订Nginx允许加密SSL证书

更换--webroot-path变量来匹配您的Nginx的文档根目录。 通过发出以下命令确保脚本可执行。

$ sudo chmod +x /usr/local/bin/ssl-renew.sh

14.最后增加一个cron作业在午夜运行脚本每两个月,以确保您的证书将在大约30天后到期前进行更新。

$ sudo crontab -e

在文件底部添加以下行。

0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/your_domain.tld-renew.log 2>&1
更新允许加密SSL证书

更新允许加密SSL证书

而已! 你的Nginx服务器现正在使用的是免费让我们加密的SSL证书SSL内容。