如何在 Nginx 上为 Ubuntu 14.04 创建 SSL 证书如何在 Nginx 上为 Ubuntu 14.04 创建 SSL 证书如何在 Nginx 上为 Ubuntu 14.04 创建 SSL 证书如何在 Nginx 上为 Ubuntu 14.04 创建 SSL 证书
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Nginx 上为 Ubuntu 14.04 创建 SSL 证书

介绍

TLS 或传输层安全性及其前身 SSL(代表安全套接字层)是用于将正常流量包装在受保护的加密包装器中的 Web 协议。

使用此技术,服务器可以在服务器和客户端之间安全地发送流量,而不必担心消息会被外部方拦截和读取。证书系统还帮助用户验证他们正在连接的站点的身份。

在本指南中,我们将向您展示如何在 Ubuntu 14.04 服务器上设置用于 Nginx Web 服务器的自签名 SSL 证书。自签名证书不会为您的用户验证您的服务器的身份,因为它不是由他们的 Web 浏览器的受信任证书颁发机构之一签名的,但它将允许您加密与您的 Web 客户端的通信.

注意:您可能需要考虑使用 Let's Encrypt 而不是自签名证书。 Let's Encrypt 是一个新的证书颁发机构,它颁发在大多数网络浏览器中受信任的免费 SSL/TLS 证书。查看教程开始:如何在 Ubuntu 14.04 上使用 Let's Encrypt 保护 Nginx

先决条件

要开始使用本指南,您需要在服务器上设置一些基本的东西。

您应该有一个具有 sudo 权限的非根用户可用。您可以按照 Ubuntu 14.04 初始服务器设置中的步骤 1-4 了解如何设置此类用户帐户。

之后,您还需要安装 Nginx Web 服务器。如果您想在您的服务器上安装整个 LEMP(Linux、Nginx、MySQL、PHP)堆栈,您可以按照我们在 Ubuntu 14.04 上设置 LEMP 的指南进行操作。

如果你只想要 Nginx 网络服务器,你可以直接输入:

sudo apt-get update
sudo apt-get install nginx

第一步 — 创建 SSL 证书

我们可以从创建一个目录开始,该目录将用于保存我们所有的 SSL 信息。我们应该在 Nginx 配置目录下创建它:

sudo mkdir /etc/nginx/ssl

现在我们有了放置文件的位置,我们可以通过键入以下命令一次性创建 SSL 密钥和证书文件:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

您将被问到一系列问题。在我们讨论之前,让我们看一下我们发出的命令中发生了什么:

  • openssl:这是用于创建和管理 OpenSSL 证书、密钥和其他文件的基本命令行工具。
  • req:此子命令指定我们要使用 X.509 证书签名请求 (CSR) 管理。 \X.509 是 SSL 和 TLS 遵守其密钥和证书管理的公钥基础设施标准。我们想要创建一个新的 X.509 证书,因此我们正在使用此子命令。
  • -x509:这进一步修改了之前的子命令,它告诉实用程序我们想要创建一个自签名证书,而不是像通常发生的那样生成证书签名请求。
  • -nodes:这告诉 OpenSSL 跳过使用密码保护我们的证书的选项。当服务器启动时,我们需要 Nginx 能够在没有用户干预的情况下读取文件。密码短语可以防止这种情况发生,因为我们必须在每次重启后输入它。
  • -days 365:此选项设置证书将被视为有效的时间长度。我们在这里设定为一年。
  • -newkey rsa:2048:这指定我们要同时生成新证书和新密钥。我们没有在上一步中创建签署证书所需的密钥,因此我们需要将其与证书一起创建。 rsa:2048 部分告诉它生成一个 2048 位长的 RSA 密钥。
  • -keyout:这一行告诉 OpenSSL 在哪里放置我们正在创建的生成的私钥文件。
  • -out:这告诉 OpenSSL 在哪里放置我们正在创建的证书。

如上所述,这些选项将创建密钥文件和证书。我们将被问到一些关于我们服务器的问题,以便将信息正确地嵌入到证书中。

适当填写提示。最重要的一行是请求 Common Name(例如服务器 FQDN 或 YOUR name) 的那一行。您需要输入要与您的服务器相关联的域名。如果您没有域名,您可以输入公共 IP 地址。

整个提示看起来像这样:

<前>

您创建的两个文件都将放在 /etc/nginx/ssl 目录中。

第二步 - 配置 Nginx 以使用 SSL

我们已经在 Nginx 配置目录下创建了我们的密钥和证书文件。现在我们只需要修改我们的 Nginx 配置以通过调整我们的服务器块文件来利用这些。您可以在本文中了解有关 Nginx 服务器块的更多信息。

Nginx 版本 0.7.14 及更高版本(Ubuntu 14.04 附带版本 1.4.6)可以在与常规 HTTP 流量相同的服务器块内启用 SSL。这使我们能够以更简洁的方式配置对同一站点的访问。

您的服务器块可能看起来像这样:

<前>

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name your_domain.com;

    location / {
            try_files $uri $uri/ =404;
    }

}

要使 SSL 在同一个服务器块上工作,同时仍然允许常规 HTTP 连接,我们唯一需要做的就是添加以下行:

<前>

    <span class="highlight">listen 443 ssl;</span>

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name <span class="highlight">your_domain.com</span>;
    <span class="highlight">ssl_certificate /etc/nginx/ssl/nginx.crt;</span>
    <span class="highlight">ssl_certificate_key /etc/nginx/ssl/nginx.key;</span>

    location / {
            try_files $uri $uri/ =404;
    }

}

完成后,保存并关闭文件。

现在,您所要做的就是重新启动 Nginx 以使用您的新设置:

sudo service nginx restart

这应该会重新加载您的站点配置,现在允许它响应 HTTP 和 HTTPS (SSL) 请求。

第三步 - 测试您的设置

您的站点现在应该具有 SSL 功能,但我们应该对其进行测试以确保。

首先,让我们测试以确保我们仍然可以使用正常的 HTTP 访问该站点。在您的网络浏览器中,转到您服务器的域名或 IP 地址:

<前>

你应该看到你的正常网站。在我的示例中,我只是提供默认的 Nginx 页面:

如果您获得此页面,那么您的服务器仍在正确处理 HTTP 请求。

现在,我们可以检查我们的服务器是否可以使用 SSL 进行通信。通过指定 https 协议而不是 http 协议来执行此操作。

<前>

您可能会在网络浏览器中收到如下所示的警告:

这是意料之中的。它告诉您它无法验证您尝试连接的服务器的身份,因为它不是由浏览器配置为信任的证书颁发机构签名的。因为我们创建了一个自签名证书,所以这很有意义。

单击“仍然继续”、“继续”或任何可用的类似选项。您应该再次看到您的网站:

您的浏览器可能会在地址栏中显示被划掉的“https”,或者显示一个损坏或被划掉的“锁定”图标。如果单击锁定图标,您可以看到有关连接的更多信息:

如您所见,问题只是浏览器无法验证服务器的身份,因为它不是由配置为信任的证书颁发机构签名的。然而,中间部分显示连接已加密,因此我们已经实现了该目标。

结论

您已将 Nginx 服务器配置为处理 HTTP 和 SSL 请求。这将帮助您安全地与客户沟通,并避免外部各方读取您的流量。

如果您计划在公共网站上使用 SSL,您可能应该从受信任的证书颁发机构购买 SSL 证书,以防止向每个访问者显示可怕的警告。

贾斯汀·埃林伍德

©2015-2025 艾丽卡 support@alaica.com