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

如何为多端口配置单个SSL证书(主域名+子域名)

没问题,我来帮你搞定这个多端口SSL配置的事儿!首先得明确一个关键前提:你的SSL证书必须同时覆盖主域名和对应的子域名——要么申请一张带SAN(Subject Alternative Name)扩展的标准证书,把两个域名都列进去;要么直接用通配符证书(比如*.your-main-domain.com),这样能搞定所有子域名的SSL需求。

多端口单SSL证书配置指南

前提确认:证书要求

你的SSL证书必须包含:

  • 主域名(比如your-main-domain.com)
  • 目标子域名(比如sub.your-main-domain.com)

如果还没申请证书,记得在申请时把这两个域名都添加进去(SAN证书),或者直接选择通配符证书,这样后续子域名扩展也更灵活。


以Nginx为例的配置步骤

假设你的服务器IP是x.x.x.x,主域名对应端口1111,子域名对应端口2222:

  1. 将SSL证书文件(通常命名为cert.pem)和私钥文件(privkey.pem)放到Nginx的证书存储目录,比如/etc/nginx/ssl/

  2. 修改Nginx配置文件(可以是主配置nginx.conf,也可以是站点独立配置文件),添加两个server块:

# 主域名绑定x.x.x.x:1111
server {
    listen x.x.x.x:1111 ssl;
    server_name your-main-domain.com;

    # 复用同一张证书和私钥
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # 可选:添加SSL安全增强配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # 这里添加你的业务逻辑配置(比如反向代理、静态文件路径)
    location / {
        root /var/www/main-domain-content;
        index index.html;
    }
}

# 子域名绑定x.x.x.x:2222
server {
    listen x.x.x.x:2222 ssl;
    server_name sub.your-main-domain.com;

    # 复用同一张证书和私钥
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # 同样添加SSL安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # 子域名对应的业务配置
    location / {
        root /var/www/sub-domain-content;
        index index.html;
    }
}
  1. 检查配置语法是否正确,然后重启Nginx生效:
nginx -t
# 如果提示test is successful,执行重启
systemctl restart nginx

以Apache为例的配置步骤

  1. 先确保Apache已经启用SSL模块:
a2enmod ssl
  1. 将证书和私钥放到Apache的证书目录,比如/etc/apache2/ssl/

  2. 修改Apache站点配置文件(比如/etc/apache2/sites-available/ssl-multiport.conf),添加两个VirtualHost块:

# 主域名绑定x.x.x.x:1111
<VirtualHost x.x.x.x:1111>
    ServerName your-main-domain.com

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/cert.pem
    SSLCertificateKeyFile /etc/apache2/ssl/privkey.pem

    # 可选的SSL安全配置
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5

    # 业务内容配置
    DocumentRoot /var/www/main-domain-content
    <Directory /var/www/main-domain-content>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

# 子域名绑定x.x.x.x:2222
<VirtualHost x.x.x.x:2222>
    ServerName sub.your-main-domain.com

    # 复用同一张证书
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/cert.pem
    SSLCertificateKeyFile /etc/apache2/ssl/privkey.pem

    # SSL安全配置
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5

    # 子域名业务配置
    DocumentRoot /var/www/sub-domain-content
    <Directory /var/www/sub-domain-content>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  1. 修改Apache端口监听配置(/etc/apache2/ports.conf),添加新的HTTPS监听端口:
Listen x.x.x.x:1111 https
Listen x.x.x.x:2222 https
  1. 检查配置并重启Apache:
apache2ctl configtest
systemctl restart apache2

验证配置是否生效

可以通过两种方式验证:

  1. 打开浏览器访问https://your-main-domain.com:1111和https://sub.your-main-domain.com:2222,查看地址栏的SSL锁标识是否正常,无警告
  2. 用openssl命令在终端验证:
# 验证主域名端口
openssl s_client -connect x.x.x.x:1111 -servername your-main-domain.com
# 验证子域名端口
openssl s_client -connect x.x.x.x:2222 -servername sub.your-main-domain.com

在输出内容中找到Subject:和Issuer:字段,确认证书匹配,同时看到SSL handshake has read XXX bytes and written XXX bytes即表示连接成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:36