前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Nginx同一个IP上多个域名配置安装SSL证书

Nginx同一个IP上多个域名配置安装SSL证书

作者头像
Tinywan
发布于 2024-03-20 13:18:09
发布于 2024-03-20 13:18:09
2.3K00
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

0x01 前言

在同一台服务器上配置多个带有SSL证书的HTTPS网站时,每个网站确实需要使用不同的端口号,以避免冲突。这是因为SSL/TLS协议通常是在特定的端口上运行的,默认情况下是443端口。

当您尝试在相同的端口上配置多个HTTPS网站时,服务器将不知道如何区分传入的请求应该路由到哪个网站。每个HTTPS请求都包含主机名信息(即网站域名),但这部分信息是在SSL/TLS握手之后才被解析的。在握手过程中,服务器需要根据客户端提供的证书信息来确定使用哪个SSL证书进行加密通信。如果多个网站使用相同的端口,服务器将无法确定在握手过程中应该使用哪个证书。

因此,为了在同一台服务器上运行多个HTTPS网站,您需要为每个网站分配不同的端口号。这样,当客户端尝试连接到服务器时,它们可以通过指定不同的端口号来访问不同的网站。当然,使用非默认端口号可能会增加一些配置和管理的复杂性,但这是实现多个HTTPS网站在同一台服务器上运行的必要步骤。

0x02 解决方案

Nginx支持TLS协议的SNI扩展,这使得它可以在同一个IP地址和端口上,使用不同的SSL证书为不同的域名提供服务。SNI扩展在客户端的TLS握手过程中发送,允许服务器知道客户端正在尝试连接的域名,从而能够选择正确的SSL证书。

关于SNI的支持,它确实需要客户端和服务器端的支持。客户端(例如浏览器或其他TLS客户端)必须在TLS握手过程中发送SNI信息。在服务器端,Nginx依赖于OpenSSL库来提供SNI的支持。因此,如果Nginx在编译时链接的OpenSSL库支持SNI,那么Nginx就能够使用SNI。

编译Nginx时,SNI的支持是由OpenSSL库决定的。具体来说,Nginx会检查OpenSSL的ssl.h头文件中的宏定义和函数原型,来确定是否支持SNI。如果编译时使用的OpenSSL库支持SNI(即SSL_CTRL_SET_TLSEXT_HOSTNAME可用),那么Nginx在运行时就会启用SNI功能。

在实际部署中,只要确保服务器上的OpenSSL库支持SNI,并且Nginx是在链接了支持SNI的OpenSSL库的情况下编译的,那么SNI就可以正常工作。这通常意味着在大多数现代系统上,只要安装了最新版本的OpenSSL,并且Nginx是用这个版本的OpenSSL编译的,SNI就应该能够正常工作。

编译

注意:Nginx在默认情况下是TLS SNI support disabled。重新编辑,添加配置:--with-openssl-opt="enable-tlsext"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure --prefix=/usr/local/openresty --with-luajit \
--with-http_ssl_module --with-openssl=/usr/local/openssl \
--with-openssl-opt="enable-tlsext" --without-http_redis2_module \
--with-http_iconv_module --with-http_stub_status_module \
--with-http_xslt_module --add-dynamic-module=/home/www/DEMO/nginx-ts-module \
--add-dynamic-module=/home/www/DEMO/nginx-rtmp-module
...
make
sudo make install

配置

域名列表

序号

名称

域名

HTTPS 主机

1

官方域名

www.tinywan.com

https://www.tinywan.com

2

直播域名

live.tinywan.com

https://live.tinywan.com

3

点播域名

vod.tinywan.com

https://vod.tinywan.com

main.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 配置HTTP请求重定向
server {
    listen       80;
    server_name  www.tinywan.com; 
    rewrite ^ https://$http_host$request_uri? permanent;
}

www.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen       443 ssl;
    server_name  www.tinywan.com;
    root /home/www/web/www.tinywan.com;

    ssl on;
    ssl_certificate      /etc/letsencrypt/live/www.tinywan.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/www.tinywan.com//privkey.pem;
    server_tokens off;
}

live.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# live.tinywan.com
server{
    listen       443 ssl;
    server_name  live.tinywan.com;

    root /home/www/web/live.tinywan.com;

    ssl on;
    ssl_certificate      /etc/letsencrypt/live/www.tinywan.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/www.tinywan.com//privkey.pem;
    server_tokens off;
}

vod.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vod.tinywan.com
server{
    listen       443 ssl;
    server_name  vod.tinywan.com;

    root /home/www/web/vod.tinywan.com;

    ssl on;
    ssl_certificate      /etc/letsencrypt/live/www.tinywan.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/www.tinywan.com//privkey.pem;
    server_tokens off;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CentOS7-Nginx配置Let's-Encrypt-SSL证书
为http站点添加https支持,需要从证书发行机构获取SSL/TLS 证书。常见的免费证书有两种:
职场亮哥
2020/10/10
2.1K0
如何通过Nginx服务器将系统平台升级至HTTP/2.0协议,实现访问速度的大幅提升
HTTP/2.0(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的的第二个主要版本,使用于万维网。HTTP/2.0是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议。它由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发。
Tinywan
2023/11/22
6710
如何通过Nginx服务器将系统平台升级至HTTP/2.0协议,实现访问速度的大幅提升
通过Nginx配置域名映射到本地项目
猫头虎博主在此为大家详细讲解如何通过Nginx配置将特定域名映射到本地项目。在云计算和网络技术日益成熟的今天,使用Nginx实现域名的解析和映射成为了开发和运维人员的基本技能。本文将从Nginx的基本配置开始,深入探讨如何通过简单的配置实现域名到本地项目的映射,帮助读者理解和掌握这一重要技能。 😺
猫头虎
2024/04/09
9840
通过Nginx配置域名映射到本地项目
如何保护 Ubuntu 16.04 上的 NGINX Web 服务器
Let’s Encrypt 是互联网安全研究组织 (ISRG) 提供的免费证书认证机构。它提供了一种轻松自动的方式来获取免费的 SSL/TLS 证书 - 这是在 Web 服务器上启用加密和 HTTPS 流量的必要步骤。获取和安装证书的大多数步骤可以通过使用名为 Certbot 的工具进行自动化。
用户4988085
2021/09/14
3.6K1
流媒体HLS传输协议的直播加密播放解决方案
HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。
Tinywan
2024/03/11
3400
流媒体HLS传输协议的直播加密播放解决方案
SSL证书自动化如此简单-certbot实践
方式一:用指定根目录的方式,会在根目录下创建一个.well-known来验证域名的所有权
用户10002156
2024/01/05
7790
SSL证书自动化如此简单-certbot实践
教你快速撸一个免费HTTPS证书
HTTPS已成为业界标准,这篇博客将教你申请Let’s Encrypt的免费HTTPS证书。
Fundebug
2018/07/06
1.8K2
教你快速撸一个免费HTTPS证书
教你快速撸一个免费HTTPS证书
HTTPS 已成为业界标准,这篇博客将教你申请Let’s Encrypt的免费 HTTPS 证书。
Fundebug
2020/01/02
9720
Docker获取Let`s Encrypt SSL 证书
为了方便维护、升级,同时也避免破坏本地的开发环境,我这里使用docker方式来运行certbot。整个过程分为两步:首次申请证书和证书更新。
孟斯特
2023/11/15
7530
如何构建多域名HTTPS代理服务器转发
在当今互联网时代,安全可靠的网络访问是至关重要的。本文将介绍如何使用SNI Routing技术来构建多域名HTTPS代理服务器转发,轻松实现多域名的安全访问和数据传输。
华科云商小徐
2023/08/23
4830
使用 Certbot 安装 Letsencrypt 证书
1、拥有一个域名,例如 mydomain.com 2、在域名服务器创建一条A记录,指向云主机的公网IP地址。例如 demo.mydomain.com 指向 192.168.0.1 的IP地址 3、要等到新创建的域名解析能在公网上被解析到
SkyRiN
2018/11/20
4.6K0
强大!Nginx 配置在线一键生成“神器”
Nginx作为一个轻量级的HTTP服务器,相比Apache优势也是比较明显的,在性能上它占用资源少,能支持更高更多的并发连接,从而达到提高访问效率;在功能上它是一款非常优秀的代理服务器与负载均衡服务器;在安装配置上它安装,配置都比较简单。
民工哥
2020/09/16
2.5K0
Linux 下 Nginx 安装部署 Let’s Encrypt 证书实现 HTTPS
网站转成https是大势所趋。但是在国内,推进的过程显然要比国外慢很多。现阶段如果将自己的网站改成https以后,会碰到这样的尴尬现象:如果在页面上引用了http://的链接或者图片,用户在浏览器上会看到类似该网站是非安全网站的警告,对于网站运营者来说可以说非常冤。由于很多链接是第三方的,没有办法去控制。
星哥玩云
2022/07/14
3.3K0
Linux  下 Nginx 安装部署 Let’s Encrypt 证书实现 HTTPS
快速配置Let's encrypt通配符证书
利用certbot工具配置Let’s encrypt通配符证书,所域名下所有的子域名都能方便的使用 https证书,而且完全免费。值得关注的是,Let’s encrypt通配符证书只是针对二级域名,并不能针对主域名,如*.hubinqiang.com和hubinqiang.com 被认为是两个域名,如果和我一样使用的是主域名,在申请的时候需要注意都要申请。
OwenZhang
2021/12/08
2K0
快速配置Let's encrypt通配符证书
使用Let's Encrypt的SSL证书配置HTTPS手记
前段时间,看见很多大会都在分享全站HTTPS的经验。HTTPS固然好,前提是SSL证书,并且签发证书的机构要靠谱。沃通的CA证书就相继被Mozilla和Google封杀了。曾经对于普通用户,权威,安全,并且免费的证书无疑就像天上的星星,可望而不可及。现在,这些星星变成了馅饼掉了下来。没错,我们可以申请安全免费的ssl证书--- Let's Encrypt。 Let’s Encrypt是电子前哨基金会(EFF)发布的免费 SSL 证书服务,Google,Mozilla和Microsoft都极力支持。很早之前就
李海彬
2018/03/19
2.4K0
使用Let's Encrypt的SSL证书配置HTTPS手记
如何使用Certbot独立模式检索我们在Ubuntu 18.04上加密SSL证书
Let's Encrypt是一种通过自动API提供免费SSL证书的服务。最受欢迎的Let's Encrypt客户端是EFF的Certbot。
丰一川
2018/10/25
1.5K0
如何在Ubuntu 16.04上使用Let加密SSL证书配置GoCD
GoCD是一个功能强大的持续集成和交付平台,旨在自动化测试和发布流程。GoCD具有许多高级功能,例如比较构建,可视化复杂工作流以及自动构建版本跟踪,是一种灵活的工具,可以帮助团队将经过良好测试的软件提供给生产环境。
编程男孩
2018/09/21
1.2K0
在CentOS Linux 7.5上使用Let’s Encrypt以保护Nginx
Let's Encrypt是由互联网安全研究组(ISRG)开发的免费开放认证机构。 Let's Encrypt颁发的证书现在几乎所有浏览器都信任。
星哥玩云
2022/07/13
1.8K0
在CentOS Linux 7.5上使用Let’s Encrypt以保护Nginx
https证书
获取certbot wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto 安装nginx yum -y install nginx 生成证书 ./certbot-auto certonly --standalone --email syf@alexorz.com --agree-tos -d alexorz.com 查看生成的证书 ll /etc/letsencrypt/live/alexorz.com/privkey.pem lrwxrwx
零月
2018/04/25
2.5K0
https证书
SSL证书申请与使用
描述:服务器CentOS7.x,Nignx,Let’s Encrypt做免费的HTTPS证书。 Let’s Encrypt官网: https://letsencrypt.org/ 操作流程:
全栈工程师修炼指南
2022/09/29
1.1K0
相关推荐
CentOS7-Nginx配置Let's-Encrypt-SSL证书
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验