Apache 中可能存在两个具有相同名称的不同 SSL 站点吗?

Apache 中可能存在两个具有相同名称的不同 SSL 站点吗?

我刚刚从 debian 7 升级到 debian 8(apache 2.4),名为 debian.domain.com 我有 Request Tracker(一个帮助台软件),我想从https://helpdesk.domain.com(我有一个有效的 SSL 证书)

将 helpdesk.domain.com 解析为 debian.domain.com 的正确 DNS 已经设置并运行良好。

我有一个小的 php 脚本,它通过纯 http 提供 Firefox 更新,并且我在 /var/www 中还有一个包含 Flash Player 更新的 pub 文件夹。这个必须通过 https 提供。

问题是:我可以从 helpdesk.domain.com 提供帮助台和闪存更新吗?

帮助台文件位于 /opt/rt4/share/html,/pub 文件夹位于 /var/www。

到目前为止我可以完成以下工作:

-Firefox 更新可通过普通的 http 进行

-Flash 更新通过 helpdesk.domain.com 服务器顺利进行

-Helpdesk 只能从 debian.domain.com 访问,因此收到证书错误

这是我当前的 apache 2.4 配置,如果可能的话,有人能帮我调整它以实现这一点吗?不知何故,我认为 Debian 7 运行良好,但我不确定:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName debian.domain.com:443

    <Directory "/opt/rt4/sbin">
      SSLOptions +StdEnvVars
    </Directory>
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/domain.cert
    SSLCertificateKeyFile /etc/ssl/certs/private.key
    SSLCertificateChainFile /etc/ssl/certs/root_bundle.crt

    AddDefaultCharset UTF-8

    ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/

    DocumentRoot "/opt/rt4/share/html"
    <Location />
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        Options +ExecCGI
        AddHandler fcgid-script fcgi
    </Location>
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName helpdesk.domain.com:443
    AddDefaultCharset UTF-8
    DocumentRoot /var/www
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/domain.cert
    SSLCertificateKeyFile /etc/ssl/certs/private.key
    SSLCertificateChainFile /etc/ssl/certs/root_bundle.crt
</VirtualHost>
</IfModule>

这是我在 Debian 7(apache 2.2)上使用的旧配置,但我尝试使用它在这个版本,却发生了同样的事情

<IfModule mod_ssl.c>
NameVirtualHost *:443

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName debian.domain.com:443
    AddDefaultCharset UTF-8
    DocumentRoot /opt/rt4/share/html
    Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
    ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
    <Location />
      ## Apache version < 2.4
      Order allow,deny
      Allow from all
    </Location>
    <Location /NoAuth/images >
    </Location>
    <Directory "/opt/rt4/sbin">
      SSLOptions +StdEnvVars
    </Directory>
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/domain.crt
    SSLCertificateKeyFile /etc/ssl/certs/domain/private.key
    SSLCertificateChainFile /etc/ssl/certs/domain/root_bundle.crt
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName helpdesk.domain.com:443
    AddDefaultCharset UTF-8
    DocumentRoot /var/www
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/domain.crt
    SSLCertificateKeyFile /etc/ssl/certs/domain/private.key
    SSLCertificateChainFile /etc/ssl/certs/domain/root_bundle.crt
</VirtualHost>
</IfModule>

更新:这是我的 000-default.conf 文件,用于纯 http。重定向不起作用,因为根据 Adob​​e 文档,flash 客户端直接请求 https1。我的 SSL 配置名为 rt.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            #AllowOverride None
            AllowOverride All
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>
</VirtualHost>

答案1

请发布您的完整配置。缺少 http 配置。如果我不得不猜测,您必须执行以下操作:

  1. 将条目更改ServerName为以下内容:

    服务器名称 helpdesk.domain.com

  2. 确保您的配置helpdesk.domain.com不是 Apache 最先读取的。如果它们在不同的文件中,Apache 将按字母数字升序读取它们。Debian000-default.conf上的默认设置通常会完成这项工作。

  3. 为了确保某些文件使用 https,可以使用mod_redirectmod_alias(使用Redirect指令即可。另请参阅文档。请解释“此服务必须通过 https 提供。”是什么意思。http 是否不允许运行?

相关内容