欢迎光临
我们一直在努力

如何安装Nginx让我们加密并从SSLLabs测试中获取A +

如何安装Nginx让我们加密并从SSLLabs测试中获取A +

在本教程中,我将逐步向您展示如何使用Letsencrypt证书安装和配置Nginx Web服务器。 本指南将告诉您如何安装Nginx Web服务器,安装让我们的加密工具,生成SSL证书以加密,使用SSL配置nginx虚拟主机,以及创建额外的SSL配置以从SSL测试SSL实验室获取A +。

先决条件

  • Linux服务器 – Ubuntu 18.04或CentOS 7.5
  • 根特权

我们将要做什么?

  1. 安装Nginx Web服务器
  2. 配置防火墙UFW / Firewalld
  3. 安装让我们加密并生成SSL证书
  4. 配置安全SSL
  5. 使用SSL配置Nginx虚拟主机
  6. 测试

第1步 – 安装Nginx Web服务器

在本教程中,我们将指导您在两台Linux服务器(Ubuntu 18.04和CentOS 7.5)上使用Letsencrypt安装和配置Nginx Web服务器。

在Ubuntu 18.04上。

更新存储库,然后使用下面的apt命令安装nginx。

sudo apt update
sudo apt install nginx -y

在CentOS 7.5上。

将EPEL存储库安装到CentOS系统并使用yum命令安装Nginx。

sudo yum install epel-release -y
sudo yum install nginx -y

安装完成后,启动Nginx服务并使其每次在系统启动时启动。

systemctl start nginx
systemctl enable nginx

Nginx Web服务器现在已安装,并且正在默认HTTP端口80上运行。请使用下面的netstat命令进行检查。

netstat -plntu

安装Nginx Web服务器

第2步 – 配置防火墙UFW – Firewalld

建议打开服务器上的防火墙并根据需要打开特定端口。 在这一步中,我们将演示如何在Linux服务器Ubuntu 18.04上使用UFW防火墙和CentOS 7.5系统上的Firewalld打开SSH,HTTP和HTTPS端口。

在Ubuntu 18.04上 – UFW防火墙

在Ubuntu系统上启用UFW防火墙之前,请确保在列表防火墙配置中启用了SSH端口。

使用ufw命令将SSH服务端口添加到防火墙配置,然后启用UFW防火墙服务。

ufw allow ssh
ufw enable

现在添加HTTP和HTTPS服务。

ufw allow http
ufw allow https

SSH,HTTP和HTTPS服务端口已添加到UFW防火墙服务列表中,请使用以下命令检查它。

ufw status

配置UFW防火墙

在CentOS 7.5 – Firewalld上

在向firewelld添加端口和服务之前,请确保firewalld服务已启动并正在运行。

启动firewalld服务并使其每次在系统启动时启动。

systemctl start firewalld
systemctl enable firewalld

注意:

  • Firewald服务列表中默认启用SSH服务。

现在使用下面的firewall-cmd命令添加HTTP和HTTPS服务。

firewall-cmd –add-service=http –permanent
firewall-cmd –add-service=https –permanent

重新加载firewalld配置并检查服务列表。

firewall-cmd –reload
firewall-cmd –list-services

您将在列表中获得SSH,HTTP和HTTPS服务。

配置Firewalld

第3步 – 安装Letsencrypt并生成证书

在这一步中,我们将安装letsencrypt工具,并使用cerbot命令生成强大的SSL证书Letsencrypt。

在Ubuntu 18.04上

使用下面的apt命令安装letsencrypt软件包。

sudo apt install letsencrypt -y

在CentOS 7.5上

现在使用下面的yum命令在CentOS 7上安装letsencrypt软件包。

sudo yum install certbot -y

安装完成后,我们将创建一个用于生成SSL证书文件的新配置。

在Ubuntu 18.04上

转至’/ etc / nginx’配置目录并在’snippets’目录下创建新的配置文件’cerbot.conf’。

cd /etc/nginx/
vim snippets/certbot.conf

在那里粘贴以下配置。

    location /.well-known {        alias /var/www/html/.well-known;    }

保存并退出。

现在编辑默认的Nginx虚拟主机文件。

vim sites-available/default

在“服务器{..}”块下添加以下配置。

    include snippets/certbot.conf;

保存并退出。

在CentOS 7.5上

转至’/ etc / nginx’配置目录,并在’default.d’目录下创建新的配置文件’certbot.conf’。

cd /etc/nginx/
vim default.d/certbot.conf

粘贴下面的配置。

    location /.well-known {        alias /usr/share/nginx/html/.well-known;    }

保存并退出。

现在测试nginx配置并确保没有错误,然后重新启动nginx服务。

nginx -t
systemctl restart nginx

接下来,使用certbot命令生成SSL letsencrypt证书。

在Ubuntu 18.04上

certbot certonly –rsa-key-size 4096 –webroot –agree-tos –no-eff-email –email myemail@gmail.com -w /var/www/html -d hakase-labs.io

在CentOS 7.5上

certbot certonly –rsa-key-size 4096 –webroot –agree-tos –no-eff-email –email myemail@gmail.com -w /usr/share/nginx/html -d hakase-labs.io

注意:

  • 我们将把我们域的RSA密钥大小指定为’4096’,并且我们将在Ubuntu系统上将认证方法定义为默认web根目录’/ var / www / html’,’/ usr / share / nginx / html ‘目录为CentOS 7系统。

创建让我们加密SSL证书

完成后,您将在’/ etc / letsencrypt / live’目录中获取域名的所有SSL证书文件。

为了获得额外的安全性,我们将使用OpenSSL命令生成DHPARAM密钥’4096’,如下所示。

openssl dhparam -out /etc/nginx/dhparam.pem 4096

DHPARAM密钥已经生成到’/ etc / nginx’目录。

第4步 – SSL配置

在这一步中,我们将定义Nginx Web服务器的SSL配置。 我们将创建新的配置’ssl.conf’,其中包含专门针对Nginx Web服务器的经过调整的SSL配置安全性。

在Ubuntu 18.04上

转至’/ etc / nginx /’配置目录并在’snippets’目录下创建新的SSL配置’ssl.conf’。

cd /etc/nginx/
vim snippets/ssl.conf

在CentOS 7.5上

转至’/ etc / nginx /’配置目录,并在’default.d’目录下创建新的SSL配置’ssl / conf’。

cd /etc/nginx/
vim default.d/ssl.conf

在那里粘贴以下SSL配置。

# Specify the TLS versionsssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;# Ciphersuites recommendation from the chiper.li# Use this chipersuites to get 100 points of the SSLabs test# Some device will not support#ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";# Mozilla Ciphersuits Recommendation# Use this for all devices supportsssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';# Use the DHPARAM key and ECDH curve >= 256bitssl_ecdh_curve secp384r1;ssl_dhparam /etc/nginx/dhparam.pem;server_tokens off;ssl_session_timeout 1d;ssl_session_cache shared:SSL:50m;ssl_session_tickets off;# Enable HTTP Strict-Transport-Security# If you have a subdomain of your site,# be carefull to use the 'includeSubdomains' optionsadd_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";# Enable OSCP Stapling for Nginx web server# If you're using the SSL from Letsencrypt,# use the 'chain.pem' certificatessl_stapling on;ssl_stapling_verify on;ssl_trusted_certificate /etc/letsencrypt/live/hakase-labs.io/chain.pem;resolver 8.8.8.8 8.8.4.4 valid=300s;resolver_timeout 5s;# XSS Protection for Nginx web serveradd_header X-Frame-Options DENY;add_header X-XSS-Protection "1; mode=block";add_header X-Content-Type-Options nosniff;add_header X-Robots-Tag none;

保存并退出。

注意:

  • 指定站点的TLS版本,只接受TLSv1 TLSv1.1 TLSv1.2。
  • 指定SSL加密套件,并且建议使用Mozilla建议的SSL加密套件来获得所有设备的兼容性。
  • 启用HSTS,OSCPStapling并添加XSS保护。

第5步 – 使用SSL配置Nginx虚拟主机

在这一步中,我们将为该域名创建一个虚拟主机文件。 我们将创建一个新的虚拟主机,一个名为hakase-labs.io的域名,其网页根目录将位于’/ var / www / site01’目录。

创建新目录’/ var / www / site01’并在里面创建’index.html’文件。

mkdir -p /var/www/site01
echo ‘<h1><center>Nginx – Letsencrypt – A+</center></h1>’ > /var/www/site01/index.html

现在进入’/ etc / nginx’配置目录,为ubuntu创建名为’hakase-labs.io’的新虚拟主机文件,为CentOS 7系统创建’hakase-labs.conf’。

在Ubuntu 18.04上

cd /etc/nginx/
vim sites-available/hakase-labs.io

在CentOS 7.5上

cd /etc/nginx/
vim conf.d/hakase-labs.conf

将下面的示例Nginx虚拟主机配置粘贴到那里。

server {    listen 80;    listen [::]:80;    server_name hakase-labs.io;    return 301 https://$host$request_uri;}server {        listen 443 ssl http2;        listen [::]:443 ssl http2;        root   /var/www/site01;        index index.html index.php index.htm;        server_name  hakase-labs.io;        error_log /var/log/nginx/hakase-error.log warn;        ssl_certificate /etc/letsencrypt/live/hakase-labs.io/fullchain.pem;        ssl_certificate_key /etc/letsencrypt/live/hakase-labs.io/privkey.pem;        #SSL Configuration        include snippets/ssl.conf;        location ~ /.well-known {                allow all;        }        location / {            try_files $uri $uri/ =404;        }        location = /favicon.ico {                log_not_found off;                access_log off;        }        location = /robots.txt {                allow all;                log_not_found off;                access_log off;        }        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {                expires max;                log_not_found off;        }}

保存并退出。

注意:

  • 更改’include snippets / ssl.conf;’ 线。 如果您使用的是Ubuntu,请将其保留为默认值。 如果您使用CentOS,请将目录更改为’default.d / ssl.conf’

只在Ubuntu系统上

启用新的虚拟主机文件并测试配置,并确保没有错误。

ln -s /etc/nginx/sites-available/hakase-labs.io /etc/nginx/sites-enabled/
nginx -t

现在重新启动nginx服务。

systemctl restart nginx

已启用启用HTTPS和其他SSL配置的新虚拟主机。

使用netstat命令进行检查,您将在列表中获得HTTPS端口443。

netstat -plntu

配置Nginx

第6步 – 测试

打开你的网页浏览器并输入你的域名,我的是’http://hakase-labs.io’。

测试nginx

你将被重定向到HTTPS连接。

现在转到SSL测试网站’ https://www.ssllabs.com/ssltest/ ‘并输入您自己的域名,然后等待以获得结果。

以下是我使用’Mozilla密码组推荐’的结果。

A +来自SSL实验室的结果

以下是我使用’Cipher.li密码组推荐’的结果。

用Cipher.li密码组推荐

您将看到所有结果都具有“A +”结果,并且仅在Mozilla建议和Cipherli.st建议中的“密码强度”上有所不同。

要检查服务器上的OSCP Stapling和HSTS,请滚动测试结果页面,您将得到如下所示的结果。

OSCPStapling

如果要从命令行检查OSCPStapling,请使用以下命令检查它。

echo QUIT | openssl s_client -connect hakase-labs.io:443 -status 2> /dev/null | grep -A 17 ‘OCSP response:’ | grep -B 17 ‘Next Update’

从命令行检查OSCPStapling

对于HSTS测试,请使用下面的curl命令进行检查。

curl -s -D- https://hakase-labs.io | grep -i Strict

HSTS测试

使用SSL Letsencrypt以及从SSLabs测试获取A +的Nginx Web服务器安装和配置已成功完成。

参考

赞(0) 打赏
未经允许不得转载:老赵部落 » 如何安装Nginx让我们加密并从SSLLabs测试中获取A +
data-ad-format="auto" data-full-width-responsive="true">

评论 抢沙发