如何保护Ubuntu 16.04上的NGINX Web服务器

什么是 Let’s Encrypt

Let’s Encrypt 是互联网安全研究组织 (ISRG) 提供的免费证书认证机构。它提供了一种轻松自动的方式来获取免费的 SSL/TLS 证书 - 这是在 Web 服务器上启用加密和 HTTPS 流量的必要步骤。获取和安装证书的大多数步骤可以通过使用名为 Certbot 的工具进行自动化。

特别地,该软件可在可以使用 shell 的服务器上使用:换句话说,它可以通过 SSH 连接使用。

在本教程中,我们将看到如何使用 certbot 获取免费的 SSL 证书,并在 Ubuntu 16.04 服务器上使用 Nginx。

安装 Certbot

第一步是安装 certbot,该软件客户端可以几乎自动化所有的过程。 Certbot 开发人员维护自己的 Ubuntu 仓库,其中包含比 Ubuntu 仓库中存在的软件更新的软件。

添加 Certbot 仓库:


  1. # add-apt-repository ppa:certbot/certbot 

接下来,更新 APT 源列表:


  1. # apt-get update 

此时,可以使用以下 apt 命令安装 certbot:


  1. # apt-get install certbot 

Certbot 现已安装并可使用。

获得证书

有各种 Certbot 插件可用于获取 SSL 证书。这些插件有助于获取证书,而证书的安装和 Web 服务器配置都留给管理员。

我们使用一个名为 Webroot 的插件来获取 SSL 证书。

在有能力修改正在提供的内容的情况下,建议使用此插件。在证书颁发过程中不需要停止 Web 服务器。

配置 NGINX

Webroot 会在 Web 根目录下的 .well-known 目录中为每个域创建一个临时文件。在我们的例子中,Web 根目录是 /var/www/html。确保该目录在 Let’s Encrypt 验证时可访问。为此,请编辑 NGINX 配置。使用文本编辑器打开 /etc/nginx/sites-available/default:


  1. # $EDITOR /etc/nginx/sites-available/default 

在该文件中,在 server 块内,输入以下内容:


  1. location ~ /.well-known { 
  2.    allow all; 

保存,退出并检查 NGINX 配置:


  1. # nginx -t 

没有错误的话应该会显示如下:


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

重启 NGINX:


  1. # systemctl restart nginx 

使用 Certbot 获取证书

下一步是使用 Certbot 的 Webroot 插件获取新证书。在本教程中,我们将保护示例域 www.example.com。需要指定应由证书保护的每个域。执行以下命令:


  1. # certbot certonly --webroot --webroot-path=/var/www/html -d www.example.com 

在此过程中,Cerbot 将询问有效的电子邮件地址,用于进行通知。还会要求与 EFF 分享,但这不是必需的。在同意服务条款之后,它将获得一个新的证书。

最后,目录 /etc/letsencrypt/archive 将包含以下文件:

  • chain.pem:Let’s Encrypt 加密链证书。
  • cert.pem:域名证书。
  • fullchain.pem:cert.pem和 chain.pem 的组合。
  • privkey.pem:证书的私钥。

Certbot 还将创建符号链接到 /etc/letsencrypt/live/domain_name/ 中的最新证书文件。这是我们将在服务器配置中使用的路径。

在 NGINX 上配置 SSL/TLS

下一步是服务器配置。在 /etc/nginx/snippets/ 中创建一个新的代码段。 snippet 是指一段配置,可以包含在虚拟主机配置文件中。如下创建一个新的文件:


  1. # $EDITOR /etc/nginx/snippets/secure-example.conf 

该文件的内容将指定证书和密钥位置。粘贴以下内容:


  1. ssl_certificate /etc/letsencrypt/live/domain_name/fullchain.pem; 
  2. ssl_certificate_key /etc/letsencrypt/live/domain_name/privkey.pem; 

在我们的例子中,domain_name 是 example.com。

编辑 NGINX 配置

编辑默认虚拟主机文件:


  1. # $EDITOR /etc/nginx/sites-available/default 

如下:


  1. server { 
  2.  listen 80 default_server; 
  3.  listen [::]:80 default_server; 
  4.  server_name www.example.com 
  5.  return 301 https://$server_name$request_uri; 
  6.  # SSL configuration 
  7.  # 
  8.  listen 443 ssl default_server; 
  9.  listen [::]:443 ssl default_server; 
  10.  include snippets/secure-example.conf 
  11.  # 
  12.  # Note: You should disable gzip for SSL traffic. 
  13.  # See: https://bugs.debian.org/773332 
  14.  # ... 

这将启用 NGINX 加密功能。

保存、退出并检查 NGINX 配置文件:


  1. # nginx -t 
  2. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
  3. nginx: configuration file /etc/nginx/nginx.conf test is successful 

重启 NGINX:


  1. # systemctl restart nginx 

总结

按照上述步骤,此时我们已经拥有了一个安全的基于 NGINX 的 Web 服务器,它由 Certbot 和 Let’s Encrypt 提供加密。这只是一个基本配置,当然你可以使用许多 NGINX 配置参数来个性化所有东西,但这取决于特定的 Web 服务器要求。

作者:Giuseppe Molica

来源:51CTO

时间: 2024-10-31 06:21:20

如何保护Ubuntu 16.04上的NGINX Web服务器的相关文章

如何在Ubuntu 14.04上安装轻量级web服务器Cherokee

如何在Ubuntu 14.04上安装轻量级web服务器Cherokee Cherokee 是一个免费,开源,高性能轻量级的全功能web服务器,支持大部分主流操作系统(Linux. Mac OS X. Solaris 和 BSD).它支持TLS/SSL.FastCGI. SCGI. PHP. uWSGI. SSI. CGI. LDAP. HTTP代理. 视频流处理. 内容缓存. 流量控制. 虚拟主机.Apache兼容的日志文件,以及负载均衡等功能. 今天我们介绍一下怎样在Ubuntu Server

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

Shinken 是一个用 Python 实现的开源的主机和网络监控框架,并与 Nagios like 兼容,它可以运行在所有支持 Python 程序的操作系统上,比如说 Linux.Unix 和 Windows.Shinken 是 Jean Gabes 为了验证一个新的 Nagios 架构思路而编写,但是这个想法被 Nagios 的作者拒绝后成为了一个独立的网络系统监视软件,并保持了与 Nagios 的兼容. 在这篇教程中,我将会描述如何从源代码编译安装 Shinken 和向监视系统中添加一台

如何在Ubuntu 16.04上安装OTRS(开源问题单系统)

OTRS ,即开源问题单(ticket)申请系统,是一个用于客户服务.帮助台和 IT 服务管理的开源问题单软件.该软件是用 Perl 和 javascript 编写的.对于那些需要管理票据.投诉.支持请求或其他类型的报告的公司和组织来说,这是一个问题单解决方案.OTRS 支持包括 MySQL.PostgreSQL.Oracle 和 SQL Server 在内的多个数据库系统,它是一个可以安装在 Windows 和 Linux 上的多平台软件. 在本教程中,我将介绍如何在 Ubuntu 16.04

NoSQL: 如何在Ubuntu 16.04上安装OrientDB

说明 - 非关系型数据库(NoSQL)和 OrientDB 通常在我们提及数据库的时候,想到的是两个主要的分类:使用用于用户和应用程序之间进行对接的一种被称为结构化查询语言(Structured Query Language ,缩写 SQL)的关系型数据库管理系统(Relational Data base Management System,缩写 RDBMS) 以及非关系型数据库管理系统(non-relational database management systems 或称 NoSQL 数据

Ubuntu 16.04上安装 Swift 3.0及问题解答_Swift

我们对"让 Swift 3.0 在更多的 Linux 系统上运行"这件事充满了热情,因此我们开始在 Ubuntu 16.04,即 Xenial Xerus,X86 系统上构建 Swift 3.0.安装过程十分简单,只需要添加我们的 APT 仓库,并使用 apt-get 就可以了.二进制文件会被安装到 /opt/swift/swift-3.0 目录下,所以在安装 3.0 版本后需要更新 path 路径.编辑手记:对于我们为什么使用 /opt/swift 而不是 /usr/bin/ 目录,

Ubuntu 16.04下部署Graylog日志服务器

Graylog 是一个开源的日志管理系统,集中式收集.索引.分析其它服务器发来的日志.它是由 Java 语言编写的,能够接收 TCP.UDP.AMQP 协议发送的日志信息,并且使用 Mongodb 做为后台数据库.它还有一个使用 Ruby 编写的 Web 管理接口,可以轻松管理 Graylog 和查询日志. Graylog 可以收集监控多种不同应用的日志.本文只是会为了示范说明,会把用到的组件全部安装到一个单独的服务器上.对于大型.生产系统你可以把组件分开安装在不同的服务器上,这样可以提高效率.

如何在Ubuntu 16.04和Fedora 22-24上安装最新的XFCE桌面?

Xfce 是一款针对 Linux 系统的现代化轻型开源桌面环境,它在其他的类 Unix 系统上,比如 Mac OS X. Solaries. *BSD 以及其它几种上也能工作得很好.它非常快并以简洁而优雅的用户界面展现了用户友好性. 在服务器上安装一个桌面环境有时还是有用的,因为某些应用程序可能需要一个桌面界面,以便高效而可靠的管理. Xfce 的一个卓越的特性是其内存消耗等系统资源占用率很低,因此,如果服务器需要一个桌面环境的话它会是首选. Xfce 桌面的功能特性 另外,它的一些值得注意的组

[译]搭建个人深度学习平台:GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDNN 7 + Tensorflow/Mxnet/

本文讲的是[译]搭建个人深度学习平台:GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDNN 7 + Tensorflow/Mxnet/, 原文地址:Build Personal Deep Learning Rig: GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDnn 7 + Tensorflow/Mxnet/Caffe/Darknet 原文作者:Guanghan Ning 译文出自:掘金翻译计划 本文永久链接:github

Mark Shuttleworth: Mir 将在 Ubuntu 16.04 LTS 做为默认显示服务器

在一次次延迟之后,最新的情况是,Mir 将在 Ubuntu 16.04 LTS 做为默认显示服务器,也就是两年后. 最初的计划是在 Ubuntu 13.10 中使用 XMir 做为 Unity 7 下的 X11 兼容层,不过英特尔拒绝支持 XMir, 并且由于开发进度的原因,最终是延迟了这一计划. 在即将发布的 Ubuntu 14.04 LTS 中,Mir 将连同 Unity 8 做为测试项目, 不过从目前的进度来看,还十分十分前期. 相关的 Mir 说辞同样出现在 Ubuntu 14.10 中