1Panel配置SNI实现单IP多SSL证书访问
背景概述
在传统Web部署中,一个公网IP通常对应一个SSL证书。当多个域名需要共用同一IP时,往往面临证书冲突问题。通过SNI(Server Name Indication)技术,服务器可以在TLS握手阶段根据客户端请求的域名返回对应证书,从而实现单IP承载多个HTTPS站点。1Panel开源运维面板提供了简便的可视化配置方式,使这一过程更加高效。
SNI技术原理
SNI是TLS协议的标准扩展,客户端在发起HTTPS请求时,会在ClientHello消息中包含目标域名。Nginx等Web服务器可以读取该字段,并动态选择匹配的证书和配置。这也意味着,每个域名必须绑定独立的证书,且证书CN或SAN必须包含对应域名,否则浏览器会报安全警告。
1Panel中的配置步骤
1. 创建多个网站
在1Panel控制面板中,进入“网站”菜单,分别创建对应不同域名的网站。每个网站独立绑定域名,例如示例中站点A绑定a.example.com,站点B绑定b.example.com。两者共享同一个公网IP和443端口。
2. 配置SSL证书
为每个网站单独配置证书。1Panel支持上传已有证书或自动申请Let's Encrypt证书。确保证书类型选择与域名匹配,并启用HTTPS强制访问。在网站设置中找到“HTTPS”选项,开启“启用HTTPS”开关,并选择对应证书。
3. 确认SNI生效
完成证书绑定后,系统会自动生成Nginx配置片段,其中包含server_name和ssl_certificate指令。1Panel默认启用SNI支持,无需额外修改。可重启Nginx服务使配置生效。
4. 验证结果
在本地浏览器中分别访问两个域名,应看到各自对应的证书锁标志。也可以通过命令行工具验证:
openssl s_client -connect 服务器IP:443 -servername a.example.com返回的证书应属于a.example.com;使用b.example.com再次测试,得到另一张证书。
注意事项
- 证书域名匹配:每个证书的域名不得包含其他站点的域名,避免混淆。
- 防火墙与安全组:确保443端口对所有需要访问的IP开放。
- HTTP跳转:建议为每个站点配置HTTP到HTTPS的301跳转,提升访问安全性。
- 资源共享:多个站点共享同一IP和端口,但CPU、内存等资源仍独立占用,注意监控性能。
总结
通过1Panel的图形化界面,无需手动修改复杂配置文件即可完成SNI设置,实现单IP多SSL证书的稳定访问。这不仅降低了证书管理成本,也方便了运维人员在同一服务器上部署多个安全域名。对于IDC服务商和个人站长而言,这是提升资源利用率的高效方案。