You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS同一IP部署多站点不同SSL证书异常求助

我来帮你搞定这个问题!你遇到的情况其实是Web服务器配置没到位导致的——同一IP不同端口完全可以分别绑定不同SSL证书,核心是你得让服务器明确知道哪个端口对应哪个域名的证书。

先给你拆解下问题根源:站点B返回站点A的证书,说明服务器收到站点B端口的请求时,错误地加载了站点A的证书配置,大概率是以下几个原因:

先做几个快速排查

  • 先确认站点B的端口是否真的开放了:防火墙、云服务商的安全组有没有放行这个端口?别忙活半天是端口没开的问题。
  • 检查证书路径:是不是配置站点B的时候,不小心把证书路径写成站点A的了?这种低级错误很常见。
  • 用命令行验证(排除浏览器缓存):打开终端输入 openssl s_client -connect domain-b.com:你的端口,看看返回的证书域名是不是站点A的,如果是,那肯定是服务器配置的锅。

不同服务器的修复方案

如果用的是Nginx

你需要给每个站点写独立的server块,明确指定监听端口和对应证书:

# 站点A(监听443)
server {
    listen 443 ssl;
    server_name domain-a.com;

    ssl_certificate /绝对路径/domain-a.crt;
    ssl_certificate_key /绝对路径/domain-a.key;

    # 其他站点配置...
}

# 站点B(比如监听444)
server {
    listen 444 ssl;
    server_name domain-b.com;

    ssl_certificate /绝对路径/domain-b.crt;
    ssl_certificate_key /绝对路径/domain-b.key;

    # 其他站点配置...
}

修改完记得重启Nginx:sudo systemctl restart nginx,再用上面的openssl命令验证。

如果用的是Apache

要确保每个虚拟主机绑定对应的端口和证书,还要在ports.conf里添加监听:

# 先在ports.conf里加一行
Listen 444

# 站点A的虚拟主机
<VirtualHost *:443>
    ServerName domain-a.com
    SSLEngine on
    SSLCertificateFile /绝对路径/domain-a.crt
    SSLCertificateKeyFile /绝对路径/domain-a.key

    # 其他配置...
</VirtualHost>

# 站点B的虚拟主机
<VirtualHost *:444>
    ServerName domain-b.com
    SSLEngine on
    SSLCertificateFile /绝对路径/domain-b.crt
    SSLCertificateKeyFile /绝对路径/domain-b.key

    # 其他配置...
</VirtualHost>

重启Apache:sudo systemctl restart apache2,再测试访问。

如果用的是IIS

操作更直观:

  1. 打开IIS管理器,找到站点B,右键选「编辑绑定」
  2. 找到HTTPS的绑定条目,确认端口是你设置的非443端口,然后点击「编辑」
  3. 在SSL证书下拉框里选择站点B专属的证书,别选成站点A的
  4. 保存后重启站点B,再访问试试

按照上面的步骤来,基本就能解决问题啦!

内容的提问来源于stack exchange,提问作者Hein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:41:37