linux系统中创建本地ssl证书

介绍

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

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

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

 

先决条件

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

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

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

如果只需要Nginx Web服务器,则可以键入:

<span style="color:#000000"><code>sudo apt-get <span style="color:#0000ff">update</span>
sudo apt-<span style="color:#0000ff">get</span> <span style="color:#0000ff">install</span> nginx
</code></span>
 

第一步-创建SSL证书

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

<span style="color:#000000"><code>sudo <span style="color:#0000ff">mkdir</span> /etc/nginx/ssl
</code></span>

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

<span style="color:#000000"><code>sudo openssl req -x509 -nodes -days 365 -newkey <span style="color:#a31515">rsa:</span>2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
</code></span>

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

  • 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 (e.g. server FQDN or YOUR name)。您需要输入要与服务器关联的域名。如果您没有域名,则可以输入公共IP地址。

整个提示如下所示:

国家名称(2个字母代码)[AU]:美国
州或省名称(全名)[某些州]:纽约
地点名称(例如城市)[]:纽约市
组织名称(例如公司)[Internet Widgits Pty Ltd]:Bouncy Castles,Inc.
组织单位名称(例如,科)[]:水滑道部
公用名(例如服务器FQDN或您的姓名)[]:your_domain.com
电子邮件地址[]:admin@your_domain.com

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

 

第二步-配置Nginx使用SSL

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

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

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

服务器{
        监听80 default_server;
        听[::]:80 default_server ipv6only = on;

        根目录/ usr / share / nginx / html;
        index index.html index.htm;

        server_name your_domain.com;

        位置 / {
                try_files $ uri $ uri / = 404;
        }
}

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

服务器{
        监听80 default_server;
        听[::]:80 default_server ipv6only = on;

        听443 ssl;

        根目录/ usr / share / nginx / html;
        index index.html index.htm;

        server_name your_domain.com;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        位置 / {
                try_files $ uri $ uri / = 404;
        }
}

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

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

<span style="color:#000000"><code><span style="color:#a31515">sudo</span> service nginx restart
</code></span>

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

 

第三步-测试设置

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

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

http:// server_domain_or_IP

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

Nginx非SSL

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

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

https:// server_domain_or_IP

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

Nginx SSL警告

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

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

Nginx SSL

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

Nginx SSL信息

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

 

结论

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值