如何在 Ubuntu 12.04 上使用 Nginx 在一个 IP 上设置多个 SSL 证书如何在 Ubuntu 12.04 上使用 Nginx 在一个 IP 上设置多个 SSL 证书如何在 Ubuntu 12.04 上使用 Nginx 在一个 IP 上设置多个 SSL 证书如何在 Ubuntu 12.04 上使用 Nginx 在一个 IP 上设置多个 SSL 证书
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

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

如何在 Ubuntu 12.04 上使用 Nginx 在一个 IP 上设置多个 SSL 证书

状态:已弃用

本文涵盖不再受支持的 Ubuntu 版本。如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

  • 升级到 Ubuntu 14.04。
  • 从 Ubuntu 14.04 升级到 Ubuntu 16.04
  • 将服务器数据迁移到支持的版本

原因:

请参阅:

您可以使用服务器名称标识 (SNI) 在一个 IP 地址上托管多个 SSL 证书。

关于 SNI

虽然在单个虚拟专用服务器上托管多个站点对于使用虚拟主机来说不是一个挑战,但为每个站点提供单独的 SSL 证书传统上需要单独的 IP 地址。最近通过使用服务器名称指示 (SNI) 简化了该过程,它向站点访问者发送与请求的服务器名称匹配的证书。

笔记:

SNI 只能用于从您的 Web 服务器为多个 SSL 站点提供服务,并且根本不可能在其他守护进程(例如邮件服务器等)上工作。还有一小部分较旧的 Web 浏览器可能仍然会出现证书错误。维基百科有一份更新的软件列表,列出了支持和不支持此 TLS 扩展的软件。

设置

SNI 确实需要注册域名才能提供证书。

本教程中的步骤要求用户具有 root 权限。您可以在初始服务器设置教程的第 3 步和第 4 步中了解如何进行设置。

Nginx 应该已经安装并运行在您的 VPS 上。

如果不是这种情况,您可以使用以下命令下载它:

sudo apt-get install nginx

您可以确保在您的服务器上启用了 SNI:

 nginx -V

显示 nginx 版本后,您应该会看到以下行:

 TLS SNI support enabled

第一步——创建您的 SSL 证书目录

出于本教程的目的,这两个证书都是自签名的。我们将努力创建一个同时托管 example.com 和 example.org 的服务器。

SSL证书有两部分主要部分:证书本身和公钥。为了使所有相关文件易于访问,我们应该为每个虚拟主机的 SSL 证书创建一个目录。

mkdir -p /etc/nginx/ssl/example.com
mkdir -p /etc/nginx/ssl/example.org

第二步——创建服务器密钥和证书签名请求

首先,为 example.com 创建 SSL 证书。

切换到正确的目录:

cd /etc/nginx/ssl/example.com

首先创建私人服务器密钥。在此过程中,系统会要求您输入特定密码。请务必仔细记下这句话,如果忘记或丢失,将无法获取证书。

sudo openssl genrsa -des3 -out server.key 1024

通过创建证书签名请求跟进:

sudo openssl req -new -key server.key -out server.csr

此命令将提示终端显示需要填写的字段列表。

最重要的一行是“Common Name”。在这里输入您的官方域名,或者,如果您还没有,请输入您网站的 IP 地址。将挑战密码和可选的公司名称留空。

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:example.com                  
Email Address []:webmaster@awesomeinc.com

第三步——删除密码

我们几乎完成了证书的创建。但是,它可以帮助我们删除密码。尽管设置密码短语确实可以提高安全性,但当您尝试重新加载 nginx 时,问题就开始了。如果 nginx 崩溃或需要重启,您将始终必须重新输入密码才能使整个 Web 服务器恢复在线。

使用此命令删除密码:

sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key

第四步——签署您的 SSL 证书

您的证书几乎已经完成,您只需在上面签名即可。

请记住,您可以通过将 365 更改为您喜欢的天数来指定证书的有效期。目前,该证书将在一年后到期。

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

您现在已完成为您的第一台主机制作证书。

要创建第二个证书,请切换到第二个目录:

cd /etc/nginx/ssl/example.org

对第二个证书重复前三个步骤。一旦两者都平方,您就可以开始将证书添加到您的虚拟主机。

第五步——创建虚拟主机

保存并准备好证书后,您可以在虚拟主机文件中添加您的信息。

虽然这不是必需的,但我们可以创建两个虚拟主机文件以将虚拟主机存储在单独的文件中。

sudo nano /etc/nginx/sites-available/example.com

然后每个文件将包含虚拟主机配置(确保编辑 server_name、ssl_certificate 和 ssl_certificate_key 行以匹配您的详细信息):

 server {

        listen   443;
        server_name example.com;

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

        ssl on;
        ssl_certificate /etc/nginx/ssl/example.com/server.crt;
        ssl_certificate_key /etc/nginx/ssl/example.com/server.key;
}

然后,您可以将适当的配置放入其他虚拟主机文件中。

sudo nano /etc/nginx/sites-available/example.org
 server {

        listen   443;
        server_name example.org;

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

        ssl on;
        ssl_certificate /etc/nginx/ssl/example.org/server.crt;
        ssl_certificate_key /etc/nginx/ssl/example.org/server.key;
}

第六步——激活虚拟主机

最后一步是通过在站点可用目录和站点启用目录之间创建符号链接来激活主机。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/example.org

所有虚拟主机就位后,重新启动 nginx。

sudo service nginx restart

您现在应该能够访问这两个站点,每个站点都有自己的域名和 SSL 证书。

您可以通过仅输入域(例如 example.com 或 example.org)或带有 https 的域来查看带有和不带有签名 SSL 证书的站点前缀(https://example.com 或 https://example.org)。

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