阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 16.04上启用加密安全的Nginx Web服务器

118次阅读
没有评论

共计 3334 个字符,预计需要花费 9 分钟才能阅读完成。

Let’s Encrypt 是什么?

Let’s Encrypt 是由 Internet Security Research Group (ISRG)提供的一个免费的认证机构。它提供了一种轻松自动的方式来获取免费的 SSL/TLS 证书 – 这是在 Web 服务器上启用加密和 HTTPS 流量的必需步骤。获取和安装证书的大多数步骤可以通过使用名为 Certbot 的工具进行自动化。

该软件可以在存在对服务器的 shell 访问的情况下使用:换句话说,当可以通过 SSH 连接到服务器时。在本教程中,我们将看到如何使用 certbot 获取免费的 SSL 证书,并在 Ubuntu 16.04 服务器上使用 Nginx。

安装 Certbot

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

添加 Certbot 库:

#add-apt-repository ppa:certbot / certbot

接下来,更新 APT 源列表:

# apt-get update

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

# apt-get install certbot

Certbot 现已安装并可以使用。

获得证书

有各种 Certbot 插件用于获取 SSL 证书。这些插件有助于获取证书,而其安装和 Web 服务器配置都留给管理员。
我们将使用一个名为 Webroot 的插件获取 SSL 证书。

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

配置 NGINX

Webroot 通过为名为.well-known 的目录中的每个域创建一个临时文件,放置在 Web 根目录下。在我们的例子中,web 根目录是 /var/www/html。确保让我们加密验证目录。为此,请编辑 NGINX 配置。使用文本编辑器打开 /etc/nginx/sites-available/default 文件:

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

在该文件中,在服务器块中,放置以下内容:

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

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

# nginx -t

如果没有错误,应该显示:

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

重新启动 NGINX:

# systemctl restart nginx

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

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

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

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

chain.pem:加密连锁证书。
cert.pem:域名证书。
fullchain.pem:cert.pem 和 chain.pem 的组合。
privkey.pem:证书的私钥。

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

在 NGINX 上配置 SSL/TLS

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

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

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

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

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

编辑 NGINX 配置

编辑默认虚拟主机文件:

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

如下:

server {
 listen 80 default_server;
 listen [::]:80 default_server;
 server_name www.example.com
 return 301 https://$server_name$request_uri;

 # SSL configuration
 #
 listen 443 ssl default_server;
 listen [::]:443 ssl default_server;
 include snippets/secure-example.conf
 #
 # Note: You should disable gzip for SSL traffic.
 # See: https://bugs.debian.org/773332

这将启用 NGINX 上的加密。
保存,退出并检查 NGINX 配置文件:

# nginx -t

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

重新启动 NGINX:

# systemctl restart nginx

小结:

按照上述步骤安装配置,我们就有一个安全的基于 NGINX 的 Web 服务器,由 Certbot 授权加密,并加密。这只是一个基本配置,当然可以使用许多 NGINX 配置参数来个性化一切,但这取决于特定的 Web 服务器要求。

CentOS 7 下 Nginx 服务器的安装配置  http://www.linuxidc.com/Linux/2017-04/142986.htm

CentOS 上安装 Nginx 服务器实现虚拟主机和域名重定向  http://www.linuxidc.com/Linux/2017-04/142642.htm

CentOS 6.8 安装 LNMP 环境(Linux+Nginx+MySQL+PHP)http://www.linuxidc.com/Linux/2017-04/142880.htm

Linux 下安装 PHP 环境并配置 Nginx 支持 php-fpm 模块  http://www.linuxidc.com/Linux/2017-05/144333.htm

Nginx 服务的 SSL 认证和 htpasswd 认证  http://www.linuxidc.com/Linux/2017-04/142478.htm

Linux 中安装配置 Nginx 及参数详解  http://www.linuxidc.com/Linux/2017-05/143853.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

CentOS 7.2 下 Nginx+PHP+MySQL+Memcache 缓存服务器安装配置  http://www.linuxidc.com/Linux/2017-03/142168.htm

CentOS6.9 编译安装 Nginx1.4.7  http://www.linuxidc.com/Linux/2017-06/144473.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145522.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3334字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中