51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2267|回复: 0
打印 上一主题 下一主题

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

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-11-15 14:53:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


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

      -什么是 Let’s Encrypt …… 01%
      -安装 Certbot …… 12%
      -获得证书 …… 22%


      -配置 NGINX …… 28%
      -使用 Certbot 获取证书 …… 45%


      -在 NGINX 上配置 SSL/TLS …… 62%


      -编辑 NGINX 配置 …… 72%


      -总结 …… 87%
    编译自: https://www.unixmen.com/encryption-secure-nginx-web-server-ubuntu-16-04/
    作者: Giuseppe Molica
    译者: geekpi

    什么是 Let’s Encrypt

    Let’s Encrypt[1] 是互联网安全研究组织 (ISRG) 提供的免费证书认证机构。它提供了一种轻松自动的方式来获取免费的 SSL/TLS 证书 - 这是在 Web 服务器上启用加密和 HTTPS 流量的必要步骤。获取和安装证书的大多数步骤可以通过使用名为 Certbot[2] 的工具进行自动化。
    特别地,该软件可在可以使用 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 会在 Web 根目录下的 .well-known 目录中为每个域创建一个临时文件。在我们的例子中,Web 根目录是 /var/www/html。确保该目录在 Let’s Encrypt 验证时可访问。为此,请编辑 NGINX 配置。使用文本编辑器打开 /etc/nginx/sites-available/default:
    # $EDITOR /etc/nginx/sites-available/default

    在该文件中,在 server 块内,输入以下内容:
    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: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 是指一段配置,可以包含在虚拟主机配置文件中。如下创建一个新的文件:
    # $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 和 Let’s Encrypt 提供加密。这只是一个基本配置,当然你可以使用许多 NGINX 配置参数来个性化所有东西,但这取决于特定的 Web 服务器要求。
    via: https://www.unixmen.com/encryption-secure-nginx-web-server-ubuntu-16-04/
    作者:Giuseppe Molica[3] 译者:geekpi 校对:wxy
    本文由 LCTT 原创编译,Linux中国 荣誉推出

      [1]: Let’s Encrypt - https://letsencrypt.org/
      [2]: Certbot - https://certbot.eff.org/
      [3]: Giuseppe Molica - https://www.unixmen.com/author/tutan/


    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 18:55 , Processed in 0.067865 second(s), 33 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表